[英]Parsing XML file (java)
我有這個XML文件(Param.xml):
<?xml version="1.0" encoding="UTF-8"?>
<param-config>
<parameter>
<tag> BNsprate </tag>
<value> 0.8 </value>
</parameter>
<parameter>
<tag> CellId_nbr </tag>
<value> 1 </value>
</parameter>
<parameter>
<tag> Calls_nbr </tag>
<value> 2 </value>
</parameter>
<parameter>
<tag> Call_time </tag>
<value> 00:02:00 </value>
</parameter>
<parameter>
<tag> InCalls_nbr </tag>
<value> 0 </value>
</parameter>
<parameter>
<tag> Sms_nbr </tag>
<value> 0 </value>
</parameter>
</param-config>
我編寫了以下Java代碼來打印此文件內容:
private String paramReader(String tag) {
String value = "";
try {
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("Param.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("parameter");
for (int i = 0; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
System.out.println(nNode.getNodeValue());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
if (eElement.getElementsByTagName("tag").item(0)
.getTextContent() == tag) {
value = eElement.getElementsByTagName("value").item(0)
.getTextContent();
}
}
}
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
返回值:null null null null null null null請問,為什么它只讀取文件而沒有獲取內容值? 謝謝。
您正在使用等號將String與String進行比較,而此處應使用.equals方法:
if(eElement.getElementsByTagName("tag").item(0).getTextContent()==tag){
相反,它應該像這樣:
if(eElement.getElementsByTagName("tag").item(0).getTextContent().equals(tag)){
==
符號檢查引用的相等性,即,如果兩個都引用內存中的同一對象,而您想檢查值的相等性,則返回true,這就是.equals()
方法所做的。
為了進行XML解析並再次返回,您必須使用XStream
API。 操作非常簡單。請查看此鏈接
修改后的版本如下 。 這將獲取輸入標簽節點的值節點的文本內容。
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* @author JayaPrasad
*
*/
public class ParseXml {
private String paramReader(String tag) {
String value = "";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse("parse.xml");
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("parameter");
for (int i = 0; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
// NodeList childNodes = nNode.getChildNodes();
// for (int j = 0, length = childNodes.getLength(); j < length; j++) {
// System.out.println(childNodes.item(j).getNodeName() + ":"
// + childNodes.item(j).getTextContent());
// if (childNodes.item(j).getNodeName().equals(tag)) {
// value = childNodes.item(j).getTextContent();
// System.out.println("Tag Node Value ::: " + value);
// }
// }
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = null;
if (nNode instanceof Element) { // Safest way before casting
eElement = (Element) nNode;
}
if (eElement.getElementsByTagName("tag").item(0)
.getTextContent().trim().equals(tag)) {
value = eElement.getElementsByTagName("value").item(0)
.getTextContent();
System.out.println("Result value :: " + value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
public static void main(String[] args) {
ParseXml xmlObj = new ParseXml();
xmlObj.paramReader("Call_time");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.