-1

我找不到谷歌的好例子,所以也许你知道我的教程:

我想将一个xml读入java,它将像这样嵌套

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <art>
    <name>x</name>
    <first>y</first>
    <alist>
        <set>1</set>
        <set>2</set>
        <set>3</set>
    </alist>
  </art>
  <art>
    <name>z</name>
    <first>a</first>
    <alist>
        <set>1</set>
        <set>2</set>
        <set>3</set>
    </alist>
  </art>
...
</config>

我可以像http://www.developerfusion.com/code/2064/a-simple-way-to-read-an-xml-file-in-java/那样做,但没有像“设置”这样的附加标签那些。我是这方面的新手,我通过例子学习。

此致,

阿德里亚斯

4

3 回答 3

1

我将使用这篇文章中的相同答案:如何解析这样的文档?

一个好的做法是使用反映您的 XML 模式的对象模型。

使用该模型,您的解析器所要做的就是在解析过程中构建对象。

有了它,您还可以使用一些很棒的框架来将 XML 文件转换为 java 对象,例如XStream

于 2012-09-16T16:39:26.190 回答
0

您可以使用JAXB (JSR-222)将 XML 读入 Java 对象,您可以随意处理这些对象。JAXB 的实现包含在从 Java SE 6 开始的 JDK/JRE 中。下面是一个示例:

配置

JAXB 是异常配置。这意味着您只需要在希望 XML 表示不同于默认值的地方添加注释(请参阅: http ://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html )。

package forum12448687;

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Config {

    private List<Art> art;

}

艺术

package forum12448687;

import java.util.List;
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class Art {

    private String name;

    private String first;

    @XmlElementWrapper
    @XmlElement(name="set")
    private List<String> alist;

}

演示

下面的代码演示了如何将 XML 读入对象,然后将其写回 XML。

package forum12448687;

import java.io.File;
import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Config.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File xml = new File("src/forum12448687/input.xml");
        Config config = (Config) unmarshaller.unmarshal(xml);

        Marshaller marshaller= jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(config, System.out);
    }

}

输入.xml/输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
    <art>
        <name>x</name>
        <first>y</first>
        <alist>
            <set>1</set>
            <set>2</set>
            <set>3</set>
        </alist>
    </art>
    <art>
        <name>z</name>
        <first>a</first>
        <alist>
            <set>1</set>
            <set>2</set>
            <set>3</set>
        </alist>
    </art>
</config>
于 2012-09-16T17:44:41.677 回答
0

DOM解析器,SAX解析器或Pull解析器在较小的层次上解析很好,它越大越难管理......

尝试使用以下内容:

- JAXP and JAXB

- Castor

于 2012-09-16T16:43:28.857 回答