Java 从XML元素读取属性

Java 从XML元素读取属性,java,xml,xml-parsing,Java,Xml,Xml Parsing,我试图使用下面发布的Java代码显示“x”的值,但它什么也不显示。请让我知道我的错误在哪里: Java代码: for (int temp = 0; temp < nList.getLength(); temp++) { Node nNode = nList.item(temp); System.out.println("\nCurrent Element :" + nNode.getNodeName()); System.out.println("\n"+nList.getLe

我试图使用下面发布的Java代码显示“x”的值,但它什么也不显示。请让我知道我的错误在哪里:

Java代码:

for (int temp = 0; temp < nList.getLength(); temp++) {
  Node nNode = nList.item(temp);
  System.out.println("\nCurrent Element :" + nNode.getNodeName());
  System.out.println("\n"+nList.getLength());
  if (nNode.getNodeType() == Node.ELEMENT_NODE) {
    Element eElement = (Element) nNode;
    if(eElement.getAttribute("place") != null){
      System.out.println("x: " + eElement.getElementsByTagName("place").item(0).getTextContent());    
    }
  }
}
for(int-temp=0;temp
XML文件:


就我对XML的理解而言,“place”不是一个属性

if (nNode.getNodeType() == Node.ELEMENT_NODE) {
   Element eElement = (Element) nNode;
   if ("place".equalsIgnoreCase(eElement.getTagName())){
      System.out.println("x: " +     eElement.getAttribute("x"));    
   }
}
就我对XML的理解而言,“place”不是一个属性

if (nNode.getNodeType() == Node.ELEMENT_NODE) {
   Element eElement = (Element) nNode;
   if ("place".equalsIgnoreCase(eElement.getTagName())){
      System.out.println("x: " +     eElement.getAttribute("x"));    
   }
}

查看您的代码,我认为
nList
是通过调用:

NodeList nList = someDocument.getElementsByTagName("group");
因此,您需要调整循环结构,再加上按名称搜索,而不是查找属性:

for (int i = 0; i < nList.getLength(); i++) {
  Node groupNode = nList.item(i);

  NodeList placeList = groupNode.getChildNodes();

  for (int j = 0; j < placeList.getLength(); j++) {
    Node placeNode = placeList.item(j);

    if (placeNode instanceof Element) {
      Element element = (Element) placeNode;

      if ("place".equalsIgnoreCase(element.getTagName())) {
        System.out.println("x: " + element.getAttribute("x"));
      }
    }
  }
}
for(int i=0;i
查看您的代码,我认为
nList
是通过调用以下命令获得的:

NodeList nList = someDocument.getElementsByTagName("group");
因此,您需要调整循环结构,再加上按名称搜索,而不是查找属性:

for (int i = 0; i < nList.getLength(); i++) {
  Node groupNode = nList.item(i);

  NodeList placeList = groupNode.getChildNodes();

  for (int j = 0; j < placeList.getLength(); j++) {
    Node placeNode = placeList.item(j);

    if (placeNode instanceof Element) {
      Element element = (Element) placeNode;

      if ("place".equalsIgnoreCase(element.getTagName())) {
        System.out.println("x: " + element.getAttribute("x"));
      }
    }
  }
}
for(int i=0;i
你试过调试它吗?你试过调试它吗?这个。唯一的属性是x、y、class和id。唯一的属性是x、y、class和id。