访问java中xml元素中的属性

时间:2014-06-24 15:38:08

标签: java xml

我们有一个目录,可以将搜索结果作为XML文档返回。

<directory.person>
   <person netid="" pidm="" student="" affiliate="">
      <picture>no</picture>
      <name>...</name>
   </person>

我正在尝试使用以下代码解析并在java中读取它:

    try{  
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();                                         
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));
        Document doc = db.parse(is);
        NodeList nodes = doc.getElementsByTagName("person");

        for(int i = 0;i < nodes.getLength(); i++){  
            Element element = (Element) nodes.item(i);
            NodeList pidm = element.getElementsByTagName("@pidm");
            Element line = (Element)pidm.item(0);
            value = getCharacterDataFromElement(line);
            if(value.compareTo("Dana")==0 || value=="Dana")
                out.println(value);
        }
    }
    catch(Exception e){
        out.println(e);
    }

我遇到的问题是在我的“for”循环的第二行实际访问该pidm变量。我不知道该怎么做。基本上,我需要通过pidm输出,因为这是每个人返回的唯一标识符。我知道jstl会更容易,但是人们不希望这样做。

4 个答案:

答案 0 :(得分:2)

org.w3c.dom.Element有许多方法可以访问元素属性。

这里最简单的情况是调用element.getAttribute("pidm");

它会为您提供给定属性的

否则,为方便起见,您可以浏览getAttribute...的其他Element方法。

API here

答案 1 :(得分:1)

循环第一行中的Element对象应该已经是<person />元素。所以你应该能够通过以下方式获取属性:

for(int i = 0;i < nodes.getLength(); i++){  
    Element element = (Element) nodes.item(i);

    // retrieve the attribute, then get the value
    Attr pidm = element.getAttributeNode("pidm");
    String pidmString = pidm.getValue();

    // or get the attribute directly
    String pidmDirectString = element.getAttribute("pidm");

    ... // the rest of your code
}

请参阅Element Javadoc

答案 2 :(得分:1)

你快到了:

for(int i = 0;i < nodes.getLength(); i++){  
  Element element = (Element) nodes.item(i);
  value = elem.getAttributeValue("pidm");
}

答案 3 :(得分:1)

如果我理解你的问题是正确的,那么“pidm”就是一个属性。如果需要,请使用element.getAttribute(“pidm”);