Java 读取特定节点的XML
假设我有一个如下所示的XMLJava 读取特定节点的XML,java,xml,dom,Java,Xml,Dom,假设我有一个如下所示的XML <?xml version="1.0" encoding="UTF-8"?> <Data> <CreditCards> <Visa> <Name>visaname</Name> <Number>4265787654344445</Number> <ExpMonth>
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<CreditCards>
<Visa>
<Name>visaname</Name>
<Number>4265787654344445</Number>
<ExpMonth>05</ExpMonth>
<ExpYear>2017</ExpYear>
<CVV>123</CVV>
</Visa>
<Master>
<Name>mastername</Name>
<Number>5678787654344445</Number>
<ExpMonth>05</ExpMonth>
<ExpYear>2015</ExpYear>
<CVV>123</CVV>
</Master>
</CreditCards>
</Data>
public void readData(String nodeName) {
//Code here
}
<Data>
<employee>
<firstname>test1</firstname>
<lastname>lasttest</lastname>
</employee>
</data>
public void readData2(String nodeName) {
//Code here
}
所以当我用这个方法的时候
readData("Visa");
我应该打印所有子节点和相应的值。输出应该如下所示
Name = visaname
Number = 4265787654344445
ExpMonth = 05
ExpYear = 2017
CVV = 123
及
如果我有一个如下所示的xml
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<CreditCards>
<Visa>
<Name>visaname</Name>
<Number>4265787654344445</Number>
<ExpMonth>05</ExpMonth>
<ExpYear>2017</ExpYear>
<CVV>123</CVV>
</Visa>
<Master>
<Name>mastername</Name>
<Number>5678787654344445</Number>
<ExpMonth>05</ExpMonth>
<ExpYear>2015</ExpYear>
<CVV>123</CVV>
</Master>
</CreditCards>
</Data>
public void readData(String nodeName) {
//Code here
}
<Data>
<employee>
<firstname>test1</firstname>
<lastname>lasttest</lastname>
</employee>
</data>
public void readData2(String nodeName) {
//Code here
}
当我使用这个方法的时候
readData2("firstname");
它应该打印以下内容
test1
真的有可能吗?我尝试使用JDOM2API,但无法使其工作。实现这两个结果的理想方式是什么?谢谢
代码,我正在尝试
public void readXMLData(String filePath) {
File xmlFile = new File(filePath);
Map<String,String> parametersMap = new HashMap<String,String>();
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
//Root Element
System.out.println("Root element : " + doc.getDocumentElement().getNodeName());
NodeList nodeLst = doc.getElementsByTagName("Visa");
System.out.println("----------Information of Visa Card----------");
Node node = nodeLst.item(0);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
System.out.println("Child nodes : "+element.getChildNodes());
}
}
catch(Exception e) {
e.printStackTrace();
}
}
我使用了DOM解析器,但它没有给我节点的确切值。它总是返回null。添加了代码。。但这只是一个粗略的输出。Node.toString通常是错误的输出。您需要调用getTextContent之类的东西。