0
我無法解析xml文件並從中檢索數據。以下是xml和代碼片段。 ----- XML(的test.xml)-----Xpath表達式計算爲空節點列表
<?xml version="1.0" encoding="utf-8"?>
<root>
<Server>
<IPAddress>xxx.xxx.xxx.xxx</IPAddress>
<UserName>admin</UserName>
<Password>admin</Password>
</Server>
-----代碼段:-----
public static String getInput(String element)
{
String value = "";
try {
File inputFile = new File("test.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbFactory.newDocumentBuilder();
Document inputData = builder.parse(inputFile);
inputData.getDocumentElement().normalize();
String[] elementArray = element.split("/");
XPath xPath = XPathFactory.newInstance().newXPath();
String xpathExpression = element;
System.out.println("Xpath Expression:" + xpathExpression);
NodeList node = (NodeList) xPath.compile(xpathExpression).evaluate(inputData, XPathConstants.NODESET);
System.out.println(node.getLength());
if (null != node){
System.out.println(node.getLength());
for (int i=0; i<node.getLength(); i++){
System.out.println(i);
System.out.println("Node count =" + node.getLength() + ";" +
"Node Name =" + node.item(i).getNodeName());
if (node.item(i).getNodeName() == elementArray[1]){
System.out.println(node.item(i).getNodeName()+ "=" + node.item(i).getNodeValue());
value = node.item(i).getNodeValue();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
代碼編譯確定。運行時,它似乎沒有找到節點「服務器」,並且它是子節點「IPAddress」。到getInput()的調用以上將來自主要在以下格式:
getInput("Server/IPAddress");
不知道到哪裏去錯誤的,我真的很新的Xpath。我想知道是否有人可以提供幫助。
謝謝!
感謝您的快速幫助!那麼,「Server/IPAddress」和「// Server/IPAddress」有什麼區別? – user2882622
開頭的'/'表示表達式從根節點開始; '//'也可以,但掃描整個文檔('//'是'後代或自己的'軸)。完全沒有斜線意味着你從當前上下文開始,這也是(如果沒有另外設置)根節點。 –