使用java从xml获取元素和属性
我很难理解如何在另一个xml标记中获取xml标记的属性和元素 例如: 如果我有这个xml部分: 现在我正在使用这个方法 NodeList tarList=doc.getElementsByTagNametarget使用java从xml获取元素和属性,java,xml,parsing,Java,Xml,Parsing,我很难理解如何在另一个xml标记中获取xml标记的属性和元素 例如: 如果我有这个xml部分: 现在我正在使用这个方法 NodeList tarList=doc.getElementsByTagNametarget System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++"); System.out.println(""); System.out.println("");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println("");
System.out.println("");
for (int tarTemp = 0; tarTemp < tarList.getLength(); tarTemp++) {
Node tarNode = tarList.item(tarTemp);
System.out.println("\nCurrent Element :"
+ tarNode.getNodeName());
if (tarNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) tarNode;
System.out.println("name : "
+ eElement.getAttribute("name"));
System.out.println("depends : "
+ eElement.getAttribute("depends"));
System.out.println("unless : "
+ eElement.getAttribute("unless"));
System.out.println("description : "
+ eElement.getAttribute("description"));
System.out.println(
eElement.getTextContent());
}
}
现在,如果我想在这个输出中包含这个命令,我不能,因为tarList只在标记名目标中查找元素和属性 您需要以与处理目标相同的方式解析要包含在目标中的标记的节点:
为什么要用Java代码来做这件事?在XSLT中会容易得多。明白了,谢谢,这太糟糕了,如果你有多个不同的名称标记,那么你必须编写代码来处理它们中的每一个
Current Element :target
name : install
depends : repackage
unless :
description :
command: exec executable = start , vmlauncher = false
arg line='/wait ${basedir}\Installation\${pkgname}.msi'
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println("");
System.out.println("");
for (int tarTemp = 0; tarTemp < tarList.getLength(); tarTemp++) {
Node tarNode = tarList.item(tarTemp);
System.out.println("\nCurrent Element :"
+ tarNode.getNodeName());
if (tarNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) tarNode;
System.out.println("name : "
+ eElement.getAttribute("name"));
System.out.println("depends : "
+ eElement.getAttribute("depends"));
System.out.println("unless : "
+ eElement.getAttribute("unless"));
System.out.println("description : "
+ eElement.getAttribute("description"));
System.out.println(
eElement.getTextContent());
}
}
Current Element :target
name : install
depends : repackage
unless :
description :
if (tarNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) tarNode;
NodeList internalNodes = eElement .getElementsByTagName("commmand");
//process internalNodes
for (Element el : internalNodes)
{
...
}
...