无法从XML使用JDOM获取子级属性

时间:2018-08-20 22:15:21

标签: java xml jdom

我试图在示例XML文件中获取每个人的名字,但我在获取null值而不是他们的名字。

Java代码:

package testjdom;

import java.io.IOException;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class TestJDOM {

    public static void main(String[] args) throws
            JDOMException,
            IOException {

        SAXBuilder jdomBuilder
                = new SAXBuilder();
        Document jdomDocument
                = jdomBuilder.build("persons.xml");

        Element jdomRoot = jdomDocument.getRootElement();

        List<Element> children = jdomRoot.getChildren();
        for (Element child : children) {
            System.out.println(child.getAttributeValue("name"));
        }
    }
}

XML:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person>
    <id>1</id>
    <name>The Best</name>
    <email>thenextbigthing@gmail.com</email>
    <birthDate>1981-11-23</birthDate>
  </person>
  <person>
    <id>2</id>
    <name>Andy Jr.</name>
    <email>usa@gmail.com</email>
    <birthDate>1982-12-01</birthDate>
  </person>
  <person>
    <id>3</id>
    <name>JohnDoe</name>
    <email>gameover@gmail.com</email>
    <birthDate>1990-01-02</birthDate>
  </person>
  <person>
    <id>4</id>
    <name>SomeOne</name>
    <email>rucksack@gmail.com</email>
    <birthDate>1988-01-22</birthDate>
  </person>
  <person>
    <id>5</id>
    <name>Mr. Mxyzptlk</name>
    <email>bigman@hotmail.com</email>
    <birthDate>1977-08-12</birthDate>
  </person>
</persons>

如何获取每个名称的真实值?

最终,我想从XML中获取每个人的四个值。我有一个名为Person的类,它具有与XML文件中的person相同的属性,ID,名称等。我想从“ Person”类创建新对象,并使用XML中的数据。当我创建一个新对象并使用从XML中获取的值成功设置其属性时,我想将该对象添加到ArrayList中,然后对其余人员重复相同的过程。

1 个答案:

答案 0 :(得分:1)

您有两个问题。 $(document).ready(function () { $('#Home').find('#tblStyles tr:first').addClass("selected").click(); }); $('#Home').on('click', '#tblStyles .HomeSelect', function () { var id = $(this).data('productcode'); 不是属性,它是子元素。其次,name仅下降一级。

更改

getChildren()

    Element jdomRoot = jdomDocument.getRootElement();

    List<Element> children = jdomRoot.getChildren();
    for (Element child : children) {
        System.out.println(child.getAttributeValue("name"));
    }