Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java从xml获取元素和属性_Java_Xml_Parsing - Fatal编程技术网

使用java从xml获取元素和属性

使用java从xml获取元素和属性,java,xml,parsing,Java,Xml,Parsing,我很难理解如何在另一个xml标记中获取xml标记的属性和元素 例如: 如果我有这个xml部分: 现在我正在使用这个方法 NodeList tarList=doc.getElementsByTagNametarget System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++"); System.out.println(""); System.out.println("");

我很难理解如何在另一个xml标记中获取xml标记的属性和元素 例如: 如果我有这个xml部分:

现在我正在使用这个方法 NodeList tarList=doc.getElementsByTagNametarget

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)
    { 
       ...
    }
    ...