我有这样的xml:

<cargalery>
   <garage garagetype="Expensive" garagename="Garage1">
      <cars cartype="faster" carname="Car4" />
      <cars cartype="faster" carname="Car5" />
      <cars cartype="slower" carname="Car6" />
   </garage>
   <garage garagetype = "Cheap" garagename="Garage2">
      <cars cartype="slower" carname="Car1" />
      <cars cartype="faster" carname="Car2" />
      <cars cartype="slower" carname="Car3" />
   </garage>
</cargalery>


我可以阅读车库节点:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
URL u = new URL("xmlurl");
Document doc = builder.parse(u.openStream());
doc.getDocumentElement().normalize();

System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList NodeOzet = doc.getElementsByTagName("garage");

for (int temp = 0; temp < NodeOzet.getLength(); temp++)
{
  Node nOzet = NodeOzet.item(temp);
  System.out.println("\nCurrent Element :" + nOzet.getNodeName());

  if (nOzet.getNodeType() == Node.ELEMENT_NODE)
  {
    Element eElement = (Element) nOzet;
    System.out.println("Garage Name : " + eElement.getAttribute("garagename"));
  }
}


但是我看不懂车内的车库。我如何阅读车库内的汽车?

谢谢。

最佳答案

Element定义了方法getAttribute("AttributeName")

如果要在车库中使用汽车的名称,可以通过在所有元素中通过标签名称“ garage”创建一个NodeList来正确地进行操作,那么您应该创建一个嵌套的for循环,以通过标签名称“”获取所有元素汽车”。

    for (int temp = 0; temp < NodeOzet.getLength(); temp++){
        Node nOzet = NodeOzet.item(temp);
        NodeList carList = eElement.getElementsByTagName("cars")
        String cars = "";
        for(int temp2 = 0; temp2 < carList.getLength(); temp2++){
             cars += ((Element)carList.item(temp2)).getAttribute("carname") + "\t";
        }
     }


这样,对于每个车库,您都会在车库中找到所有的汽车,以及它们的名称

关于java - 节点值内的Java XML节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37182186/

10-09 20:17
查看更多