我找不到谷歌的好例子,所以也许你知道我的教程:
我想将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/那样做,但没有像“set”那样的额外标签。 我是新手,我学习了一些例子。
致以最诚挚的问候,
Adreas
答案 0 :(得分:1)
我会在这篇文章中使用相同的答案:How can I parse such a document?
一个好的做法是使用反映XML架构的对象模型。
使用该模型,解析器必须做的就是在解析过程中构建对象。
此外,您还可以使用一些优秀的框架构建,只是为了将XML文件转换为Java对象,例如XStream。
答案 1 :(得分:0)
DOM
解析器,SAX
解析器或Pull
解析器可以在较小的级别进行解析,它越大就越难管理......
尝试使用以下内容:
- JAXP and JAXB
- Castor
答案 2 :(得分:0)
您可以使用JAXB (JSR-222)将XML读入您可以根据需要处理的Java对象。从Java SE 6开始,JDK / JRE中包含JAXB的实现。下面是一个示例:
<强>配置强>
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);
}
}
<强> input.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>