[英]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.