假设我有一个类似下面的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
}
所以当我使用像
这样的方法时readData("Visa");
我应该打印所有子节点和相应的值。输出应该如下所示
Name = visaname
Number = 4265787654344445
ExpMonth = 05
ExpYear = 2017
CVV = 123
和
如果我有一个像下面这样的xml
<Data>
<employee>
<firstname>test1</firstname>
<lastname>lasttest</lastname>
</employee>
</data>
如果我的方法如下所示
public void readData2(String nodeName) {
//Code here
}
当我使用方法时
readData2("firstname");
应打印以下内容
test1
真的有可能吗?我尝试使用JDOM2 API,但无法使其正常工作。实现这两个结果的理想方法是什么?谢谢!
我正在尝试的代码
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();
}
}