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</name>
</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.