使用Java从XML文件中获取属性

时间:2011-08-03 13:41:44

标签: java xml dom extract xml-parsing

我有一个具有以下结构的XML文件:

<?xml version="1.0">
<person>
    <element att1="value1" att2="value2">Anonymous</element>
</person>

如何使用您想要的监视器提取属性名称和值。

我尝试过JDOM,但我仍然找不到从元素中获取属性的方法。

Element root = doc.getRootElement();
List allChildren = root.getChildren();
Iterator i = listEtudiants.iterator();
while(i.hasNext())
{
    Element current = (Element)i.next();
    System.out.println(current.getChild("elementName").getText());
    // this let me get just the value inside > anf </
    // so, if it's can be done by completing this code
    // it will be something like current.getSomething()
}

编辑:我仍然遇到此文件的问题。我无法达到foo属性及其价值moo。

<?xml version="1.0" encoding="UTF-8"?>
<person>
   <student att1="v1" att2="v2">
      <name>Michel</name>
      <prenames>
         <prename>smith</prename>
         <prename>jack</prename>
      </prenames>
   </student>
   <student classe="P1">
      <name foo="moo">superstar</name>
   </student>
</person>

2 个答案:

答案 0 :(得分:3)

如果您确实知道该属性的名称,则可以使用getAttributeValue获取其值:

current.getAttributeValue("att1"); // value1

如果您不知道属性的名称,那么您可以使用getAttributes()并迭代每个Attribute

List attributes = current.getAttributes();
Iterator it = attributes.iterator();
while (it.hasNext()) {
  Attribute att = (Attribute)it.next();
  System.out.println(att.getName()); // att1
  System.out.println(att.getValue()); // value1
}

答案 1 :(得分:2)

使用JDOM(org.jdom.Element) 只需使用:

current.getAttributes();
current.getAttributesValues();
current.getAttributeValue("AttributeName");

以下是文档: http://www.jdom.org/docs/apidocs/org/jdom/Element.html

编辑:以下是您可以使用getAttributes()

执行的示例
List<Attribute> l_atts = current.getAttributes();
for (Attribute l_att : l_atts) {
    System.out.println("Name = " + l_att.getName() + " | value = " + l_att.getValue());
}

编辑2:对于您的foo和moo问题,您只是不要在正确的getAttributes上致电Element。首先必须在调用它之前使用name元素,如果你使用简单的循环而没有从你交叉的元素中获取子元素,那么你只会遍历“Student”元素。