From b93c4fffbff270e5463b6088d88f4cdefcd40daf Mon Sep 17 00:00:00 2001 From: Vhati Date: Wed, 28 Aug 2013 01:23:50 -0400 Subject: [PATCH] Sloppy parser only inserts a wrapper tag when it needs to --- .../net/vhati/modmanager/core/SloppyXMLParser.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/vhati/modmanager/core/SloppyXMLParser.java b/src/main/java/net/vhati/modmanager/core/SloppyXMLParser.java index 4802675..6c91a44 100644 --- a/src/main/java/net/vhati/modmanager/core/SloppyXMLParser.java +++ b/src/main/java/net/vhati/modmanager/core/SloppyXMLParser.java @@ -61,7 +61,7 @@ public class SloppyXMLParser { public Document build( CharSequence s ) throws JDOMParseException { Document doc = new Document(); Element rootNode = new Element( "wrapper" ); - doc.addContent( rootNode ); + doc.setRootElement( rootNode ); Parent parentNode = rootNode; int sLen = s.length(); @@ -195,6 +195,17 @@ public class SloppyXMLParser { } } + if ( rootNode.getChildren().size() == 1 ) { + // No need for the wrapper, promote its only child to root. + + Element newRoot = rootNode.getChildren().get( 0 ); + newRoot.detach(); + for ( Namespace ns : rootNode.getAdditionalNamespaces() ) { + newRoot.addNamespaceDeclaration( ns ); + } + doc.setRootElement( newRoot ); + } + return doc; }