我在更新我的xml文件中的數據時遇到問題。用JDOM更新xml節點
我的XML文件是這樣的:
<root>
<info>
.....
</info>
<OBJECT_TYPE>x2000</OBJECT_TYPE>
<prop>
<DESCRIPTION>fast train</DESCRIPTION>
<PARENT>NULL</PARENT>
<VIRTUAL>0</VIRTUAL>
<VISIBLE>1</VISIBLE>
<PICTURE>NULL</PICTURE>
<HELP>NULL</HELP>
<MIN_NO>1</MIN_NO>
<MAX_NO>1</MAX_NO>
<NAME_FORMAT>NULL</NAME_FORMAT>
</prop>
<param>
<PARAMETER>nidbrc</PARAMETER>
<DATA_TYPE>String</DATA_TYPE>
<DESCRIPTION>super fast</DESCRIPTION>
<MIN_NO>1</MIN_NO>
<MAX_NO>1</MAX_NO>
<ORDER1>1</ORDER1>
<NESTED>1</NESTED>
<DEFAULT1>NULL</DEFAULT1>
<FORMAT>100:45</FORMAT>
</param>
<param>
</param>
<param>
</param>
<param>
</param>
...
</type>
<type>
...
</type>
<type>
</root>
我在這裏試圖讓我從類型號1第一個參數以及更新的9
public static void main(String[] args) {
File xml = new File("test.xml");
try {
XMLOutputter xmlOut = new XMLOutputter();
Document doc = (Document) new SAXBuilder().build(xml);
Element rootNode = doc.getRootElement();
Element typeContent = rootNode.getChildren().get(1);
System.out.println("typeContent : " + typeContent.getChildren());
for (int i = 0; i < typeContent.getContentSize(); i++) {
List<Element> list = typeContent.getChildren("param");
if (list.size() > 0) {
Element element = list.get(1);
List paramChilds = element.getChildren("PARAMETER");
for (int j = 0; j < paramChilds.size(); j++) {
Element node = (Element) paramChilds.get(j);
System.out.println(node.getText());
// xmlOut.setFormat(Format.getPrettyFormat());
// xmlOut.output(doc, new FileWriter("test.xml"));
}
}
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
的第一個參數,我覺得有什麼難知道如何挖掘到XML文件,因此這一個沒有工作,但這一個是空的:node.getChild(「PARAMETER」)。setText(「Bla」);
這不會工作。和xpath一樣棘手。我已經嘗試過,並有一個示例查詢的地方,但它也沒有工作。 – Sembrano
你是什麼意思'不會工作'?錯誤?意外的行爲?究竟是什麼? –
@ Sembrano我同意R. Oosterholt。使用'root.getChildren(「param」)'而不是'typeContent.getChildren(「param」)'(並且同意XPath是一件好事)。 – rolfl