2014-01-08 49 views
0

我哈瓦一个XML字符串,看起来像这样:添加根元素XML在Java中

<?xml version="1.0" encoding="UTF-8"?> 
<id>500404</id> 
<parentid>0</parentid> 
<version>1</version> 
<nodes> 
    <id>1015252</id> 
    <category>NODE</category> 
    <modified>false</modified> 
    <X>80</X> 
    <Y>30</Y> 
</nodes> 

我要加入所谓的“模型”根节点标签编程修改。 我尝试使用DOM解析字符串,读取所有子节点,然后创建一个类型为Document的新xml文档,其中包含名为“model”的根节点,该节点具有作为子节点的XML字符串I的所有节点。 但它给了我以下例外: 根元素后面的文档中的标记必须是格式良好的。

到目前为止我的代码是:

String xmlString = "XML GOES HERE" 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder = factory.newDocumentBuilder(); 
     InputSource inputstream = new InputSource(new StringReader(
       xmlString)); 
     Document doc = builder.parse(inputstream); 
     NodeList nodes = doc.getChildNodes(); 
       Document doc2 = docBuilder.newDocument(); 
     Element rootElement = doc2.createElement("model"); 
     doc2.appendChild(rootElement); 
       for (int k = 0; k < nodes.getLength(); k++) 
      { 
       Node childn = nodes.item(k); 
       rootElement.appendChild(childn); 
         } 

任何帮助吗?

+0

原来不是XML - 因为它没有根,所以没有XML解析器可以读取它 - 您将不得不使用纯文本工具(我对此的正常评论是要求该文件的发件人请发送一个有效的XML文件 - 这是他们的错误) – Mark

回答

0

您的问题是,您的xml字符串格式不正确(see Wikipedia article)。根元素必须是唯一的。您有4个“根”元素:id,parentid,versionnodes

因此,无法使用预计格式良好的输入的XML解析器进行解析。恐怕你不得不通过编程或手工修改字符串。在<?xml version="1.0" encoding="UTF-8"?>之后插入一个开始标签,并在字符串末尾添加相应的结束标签。

0

只需将<model>字符串<?xml version="1.0" encoding="UTF-8"?></model>加到文件末尾即可。 我想没有必要分析整个文档来添加根元素。