Java:XML 到对象(或数组)

发布于 2024-10-07 12:58:51 字数 362 浏览 4 评论 0原文

如何将 XML 文档转换为 Java 对象(或数组)? 我是这样读取 XML 的:

DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dFactory.newDocumentBuilder();

Document doc = dBuilder.parse(new File("file.xml"));
doc.getDocumentElement().normalize();

现在我想要将该 XML 作为对象(或数组),但是我应该如何执行此操作? 有没有任何方法、教程或课程可以做到这一点?

How could I convert a XML Document to a Java Object (or Array)?
I readed the XML like this:

DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dFactory.newDocumentBuilder();

Document doc = dBuilder.parse(new File("file.xml"));
doc.getDocumentElement().normalize();

Now I want that XML as Object (or Array) but how should I do this?
Are there any methods or tutorials or classes out there to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

橘虞初梦 2024-10-14 12:58:51

使用XStream

对象到 XML

Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);

生成的 XML 如下所示:

<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>    

XML 到对象

Person newJoe = (Person)xstream.fromXML(xml);

另请参阅

Use XStream.

Object to XML

Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);

The resulting XML looks like this:

<person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
</person>    

XML to Object

Person newJoe = (Person)xstream.fromXML(xml);

Also see

柠檬 2024-10-14 12:58:51

您将需要 JAXB 解组。

You will need JAXB unmarshaling.

‖放下 2024-10-14 12:58:51

我建议使用 XStream 进行 XML(反)序列化。它比使用 Java 的内置 XML API方式简单。

I recommend using XStream for XML (de)serialization. It's way simpler than using Java's built-in XML APIs.

想挽留 2024-10-14 12:58:51

我会考虑 JAX/B,它提供了一种在 Java 对象和 XML 表示之间“绑定”的方法。

我有一篇关于使用基于 Rational Eclipse 的工具来完成此操作的小文章 这里,但似乎也有(我自己从未使用过)直接的 Eclipse 插件,例如 这个

事实上,手动编写 JAX/B 是可能的,对于复杂的 XML 来说有点乏味,但是注释非常容易。

I would look at JAX/B, which gives a way to "bind" between Java objects and XML representations.

I've got a tiny write-up of doing it with Rational Eclipse-based tooling here, but there appear to be (never used them myself) straight Eclipse plugins too, for example this.

Indeed writing JAX/B by hand is possible, gets a bit dull for complex XML, but annotations are quite easy.

离旧人 2024-10-14 12:58:51

我使用过 Simple XML 并发现它非常简单且功能强大。我对 XStream 不太熟悉,但 Simple 允许您使用注释来控制 XML 模式,这给您很大的自由度。写它的人总是在他的邮件列表中做出回应。

I have used Simple XML and have found it quite easy and powerful. I am not as familiar with XStream, but Simple lets you control your XML schema using annotations which gives you a lot of freedom. The guy who writes it is always responsive on his mailing list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文