我有一个XmlDocument
用Weblogic XmlDocument
解析器创建的java。
我想XMLDocument
用我自己的数据替换其中的标签内容,或者如果标签不存在则插入标签。
<customdata>
<tag1 />
<tag2>mfkdslmlfkm</tag2>
<location />
<tag3 />
</customdata>
例如我想在位置标签中插入一个 URL:
<location>http://something</location>
但否则保持 XML 不变。
目前我使用一个XMLCursor
:
XmlObject xmlobj = XmlObject.Factory.parse(a.getCustomData(), options);
XmlCursor xmlcur = xmlobj.newCursor();
while (xmlcur.hasNextToken()) {
boolean found = false;
if (xmlcur.isStart() && "schema-location".equals(xmlcur.getName().toString())) {
xmlcur.setTextValue("http://replaced");
System.out.println("replaced");
found = true;
} else if (xmlcur.isStart() && "customdata".equals(xmlcur.getName().toString())) {
xmlcur.push();
} else if (xmlcur.isEnddoc()) {
if (!found) {
xmlcur.pop();
xmlcur.toEndToken();
xmlcur.insertElementWithText("schema-location", "http://inserted");
System.out.println("inserted");
}
}
xmlcur.toNextToken();
}
我试图找到一种“快速”的xquery
方法来做到这一点,因为它XmlDocument
有一个execQuery
方法,但发现它并不容易。
有人有比这更好的方法吗?好像有点精致。