aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/org/jsoup/parser/XmlTreeBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/org/jsoup/parser/XmlTreeBuilder.java')
-rw-r--r--server/src/org/jsoup/parser/XmlTreeBuilder.java72
1 files changed, 41 insertions, 31 deletions
diff --git a/server/src/org/jsoup/parser/XmlTreeBuilder.java b/server/src/org/jsoup/parser/XmlTreeBuilder.java
index 3f03ad26ac..c2a3635b3d 100644
--- a/server/src/org/jsoup/parser/XmlTreeBuilder.java
+++ b/server/src/org/jsoup/parser/XmlTreeBuilder.java
@@ -1,43 +1,49 @@
package org.jsoup.parser;
-import org.jsoup.helper.Validate;
-import org.jsoup.nodes.*;
-
import java.util.Iterator;
+import org.jsoup.helper.Validate;
+import org.jsoup.nodes.Comment;
+import org.jsoup.nodes.DocumentType;
+import org.jsoup.nodes.Element;
+import org.jsoup.nodes.Node;
+import org.jsoup.nodes.TextNode;
+
/**
* @author Jonathan Hedley
*/
public class XmlTreeBuilder extends TreeBuilder {
@Override
- protected void initialiseParse(String input, String baseUri, ParseErrorList errors) {
+ protected void initialiseParse(String input, String baseUri,
+ ParseErrorList errors) {
super.initialiseParse(input, baseUri, errors);
- stack.add(doc); // place the document onto the stack. differs from HtmlTreeBuilder (not on stack)
+ stack.add(doc); // place the document onto the stack. differs from
+ // HtmlTreeBuilder (not on stack)
}
@Override
protected boolean process(Token token) {
// start tag, end tag, doctype, comment, character, eof
switch (token.type) {
- case StartTag:
- insert(token.asStartTag());
- break;
- case EndTag:
- popStackToClose(token.asEndTag());
- break;
- case Comment:
- insert(token.asComment());
- break;
- case Character:
- insert(token.asCharacter());
- break;
- case Doctype:
- insert(token.asDoctype());
- break;
- case EOF: // could put some normalisation here if desired
- break;
- default:
- Validate.fail("Unexpected token type: " + token.type);
+ case StartTag:
+ insert(token.asStartTag());
+ break;
+ case EndTag:
+ popStackToClose(token.asEndTag());
+ break;
+ case Comment:
+ insert(token.asComment());
+ break;
+ case Character:
+ insert(token.asCharacter());
+ break;
+ case Doctype:
+ insert(token.asDoctype());
+ break;
+ case EOF: // could put some normalisation here if desired
+ break;
+ default:
+ Validate.fail("Unexpected token type: " + token.type);
}
return true;
}
@@ -48,13 +54,15 @@ public class XmlTreeBuilder extends TreeBuilder {
Element insert(Token.StartTag startTag) {
Tag tag = Tag.valueOf(startTag.name());
- // todo: wonder if for xml parsing, should treat all tags as unknown? because it's not html.
+ // todo: wonder if for xml parsing, should treat all tags as unknown?
+ // because it's not html.
Element el = new Element(tag, baseUri, startTag.attributes);
insertNode(el);
if (startTag.isSelfClosing()) {
tokeniser.acknowledgeSelfClosingFlag();
- if (!tag.isKnownTag()) // unknown tag, remember this is self closing for output. see above.
+ if (!tag.isKnownTag()) {
tag.setSelfClosing();
+ }
} else {
stack.add(el);
}
@@ -72,14 +80,15 @@ public class XmlTreeBuilder extends TreeBuilder {
}
void insert(Token.Doctype d) {
- DocumentType doctypeNode = new DocumentType(d.getName(), d.getPublicIdentifier(), d.getSystemIdentifier(), baseUri);
+ DocumentType doctypeNode = new DocumentType(d.getName(),
+ d.getPublicIdentifier(), d.getSystemIdentifier(), baseUri);
insertNode(doctypeNode);
}
/**
- * If the stack contains an element with this tag's name, pop up the stack to remove the first occurrence. If not
- * found, skips.
- *
+ * If the stack contains an element with this tag's name, pop up the stack
+ * to remove the first occurrence. If not found, skips.
+ *
* @param endTag
*/
private void popStackToClose(Token.EndTag endTag) {
@@ -94,8 +103,9 @@ public class XmlTreeBuilder extends TreeBuilder {
break;
}
}
- if (firstFound == null)
+ if (firstFound == null) {
return; // not found, skip
+ }
it = stack.descendingIterator();
while (it.hasNext()) {