У меня есть XmlDocument
в java, созданный с помощью парсера Weblogic XmlDocument
.Вставить/заменить тег XML в XmlDocument
Я хочу заменить содержимое тега в этом 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
метод, но не нашел его очень легко.
У кого-нибудь есть лучший способ, чем это? Это кажется немного сложным.
replace не изменяет документы, он просто заменяет текстовые вхождения в строке и возвращает строку. – 2008-10-20 15:26:40