我正在嘗試使用JAVA讀取XML文件。 XML文件: - <使用java讀取複雜XML中的值
<?xml version="1.0" encoding="UTF-8"?>
<document>
<testCaseDataName>
<id>1</id >
<testCaseName>EditTest</testCaseName >
<expectedResult>true</expectedResult >
</testCaseDataName>
<testCaseDataName>
<id>2</id >
<testCaseName>AddTest</testCaseName >
<expectedResult>true</expectedResult>
<parameter>
<key>featues</key >
<value>new</value>
</parameter>
</testCaseDataName>
<testCaseDataName>
<id>3</id >
<testCaseName>AddTest</testCaseName >
<expectedResult>true</expectedResult>
<parameter>
<key>projectType</key >
<value>old</value>
</parameter>
<parameter>
<key>Name</key >
<value>Marvel</value>
</parameter>
<parameter>
<key>status</key >
<value>ACTIVE</value>
</parameter>
<parameter>
<key>canOrder</key >
<value>Yes</value>
</parameter>
</testCaseDataName>
<testCaseDataName>
<id>4</id >
<testCaseName>AddTest</testCaseName >
<expectedResult>empty</expectedResult>
<parameter>
<key>projectType</key >
<value>GEN</value>
</parameter>
<parameter>
<key>Name</key >
<value>HPM</value>
</parameter>
<key>no status</key >
<value>ACTIVE</value>
<parameter>
<key>canOrder</key >
<value>Yes</value>
</parameter>
</testCaseDataName>
</document>
我想讀從參數到一個HashMap中的鍵和值。這裏是我的代碼: -
public class JDOM {
public static void main(String[] args) throws JDOMException, IOException {
// TODO Auto-generated method stub
File xsdfile = new File("file.xsd");
XMLReaderJDOMFactory schemafac = new XMLReaderXSDFactory(xsdfile);
SAXBuilder builder = new SAXBuilder(schemafac);
//Document doc = new SAXBuilder().build(new File("testdbcsv/ACL.xml"));
Document doc = builder.build(new File("file.xml"));
Element root = doc.getRootElement();
for (Element testcase : root.getChildren()) {
String id = testcase.getChildText("id");
String testCaseName = testcase.getChildText("testCaseName");
String expectedResult = testcase.getChildText("expectedResult");
System.out.println(expectedResult);
HashMap<String,String> parameters = new LinkedHashMap<String,String>();
Element params = testcase.getChild("parameter");
System.out.println(params);
if (params != null) {
Iterator<Element> it = params.getChildren().iterator();
while (it.hasNext()) {
Element key = it.next();
Element val = it.next();
parameters.put(key.getValue(), val.getValue());
}
}
parameters.put("expectedResult", expectedResult);
ObjectMapper obj = new ObjectMapper();
String jsonString = obj.writeValueAsString(parameters);
System.out.println(jsonString);
}
}
}
我的代碼只讀取第一套鍵和值,而不讀取其他鍵和值。 輸出是: -
{"expectedResult":"true"}
{"featues":"w,f","expectedResult":"true"}
{"projectType":"MEMOGEN","expectedResult":"true"}
{"projectType":"MEMOGEN","expectedResult":"empty"}
我想其他的鍵值也成爲的字符串中。任何人都可以請幫助和修復我的代碼
任何人都可以回答這個問題嗎? 急需 [http://stackoverflow.com/questions/24757825/how-to-read-xml-attribute-values-hierarchically-like-parentnodename-childnodeatt][1] [1 ]:http://stackoverflow.com/questions/24757825/how-to-read-xml-attribute-values-hierarchically-like-parentnodename-childnodeatt –
看看我的答案在下面。它應該幫助你 – Newbie