开发者

get the attributes from an XML File using Java

I have an XML file with this structure:

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

How can I extract the attributes names and values using wathever you want.

I tried JDOM, but I still can't find a way to get the attributes from the element.

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()
}

EDIT: I'm still having a problem with this file. I can't reach foo attribute and its value 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</na开发者_StackOverflowme>
   </student>
</person>


If you do know the name of the attribute, then you can use getAttributeValue to obtain its value:

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

If you do not know the name of the attribute(s), then you can use getAttributes() and iterate over each 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
}


Using JDOM (org.jdom.Element) Just use :

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

And here is the documentation : http://www.jdom.org/docs/apidocs/org/jdom/Element.html

EDIT : Here is an example what you can do with getAttributes()

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

EDIT 2 : For your foo and moo problem, you just don't call getAttributes on the correct Element. You first have to be on the name element before calling it, if you use your simple loop without getting children from the Elements you cross, you'll only iterate over the "Student" elements.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜