我有一个看起来像这样的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);
}
请帮忙吗?
答案 0 :(得分:0)
只需在<model>
和<?xml version="1.0" encoding="UTF-8"?>
之后将</model>
字符串添加到文件末尾即可。
我想没有必要解析整个文档来添加根元素。
答案 1 :(得分:0)
您的问题是,您的xml字符串格式不正确(see Wikipedia article)。根元素必须是唯一的。您有4个“根”元素:id
,parentid
,version
和nodes
。
因此无法使用期望格式良好的输入的XML解析器来解析它。我担心你必须以编程或手动方式将字符串修改为文本。在<?xml version="1.0" encoding="UTF-8"?>
之后插入一个开始标记,并在字符串的末尾添加相应的结束标记。