get the attributes from an XML File using Java

安稳与你 提交于 2019-12-24 01:11:08

问题


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>

回答1:


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
}



回答2:


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.



来源:https://stackoverflow.com/questions/6927385/get-the-attributes-from-an-xml-file-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!