在Java中将根元素添加到XML

时间:2014-01-08 13:02:12

标签: java xml

我有一个看起来像这样的XML String:

<?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>

我想通过添加名为“model”的根节点标记以编程方式修改它。 我尝试使用DOM解析字符串,读取所有子节点,然后创建一个类型为Document的新xml文档,其中一个名为“model”的根节点具有作为子节点的XML字符串的所有节点我已经准备好了有。 但它给了我以下例外: 根元素后面的文档中的标记必须格式正确。

到目前为止我的代码是:

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);
                         }

请帮忙吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

因此无法使用期望格式良好的输入的XML解析器来解析它。我担心你必须以编程或手动方式将字符串修改为文本。在<?xml version="1.0" encoding="UTF-8"?>之后插入一个开始标记,并在字符串的末尾添加相应的结束标记。