3

我有一个字符串,其中包含 XML 节点,并且正在寻求使用 DOM 解析来处理此字符串以提取节点值并将它们存储在局部变量中。

存储在 String 变量中的 XML:

<carGarage>
   <car>
      <make>Chrysler</make>
      <color>Red</color>
   </car>
   <car>
      <make>Musano</make>
      <color>Blue</color>
   </car>
</carGarage>

我想要提取 XML 值并将它们存储在本地属性中的 Java 类:

public class CarGarage
{   String make, color;

    public void setMake(String make)
    { this.make = make; }

    public void setColor(String color)
    { this.color = color; }

    public void DOMparsingMethod(Node thisNode)
    { int typeOfNode = thisNode.getNodeType();
      ...
    }
}

解决这个问题的最佳方法是什么?我看过 StringBufferInputStream 但不推荐使用。我真的很迷茫。

谢谢你,卢卡斯。

4

5 回答 5

2

查看使用DocumentBuilder从任何类型的输入流中进行解析。这是一个从文件中读取像您这样的类的示例。

于 2009-05-17T04:10:22.300 回答
1

有很多 object-to-xml 绑定库可以完全满足您的需求,但它们往往是相当庞大的工具。

对于这个简单的例子,自己处理 dom 是有意义的。justinhj 对此的内置 java 库的建议是一个好的开始,尽管这有时也会变得丑陋,因为 jdk 通常不为您提供 xml 解析器,需要您在幕后神奇地插入自己的。

对于这类事情,我倾向于使用jdom 。它实际上与 DocumentBuilder 路由相同,但相似且仅部分兼容。

于 2009-05-17T04:29:32.693 回答
1

为什么要使用 DOM?

如果您只是想读入并将 xml 转换为对象,那么我建议您使用 STAX,因为 SAX 比 DOM 快,但是编码太多,STAX 更好,您可以在下面了解更多信息。 https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/programming-and-development/?p=639

于 2009-05-17T04:34:15.520 回答
1

我建议你看看XStream。它支持将 XML 转换为对象。你可以给它 XML,它会给你一个你想要的对象列表。

于 2009-05-17T06:06:03.147 回答
0

根据我的经验,DOM 对这类事情很有用,因为与 SAX / STAX 相比,它的学习曲线较低,尽管它的速度或内存效率不高。获得 DOM 文档后,您可以对文档使用 XPath 查询来获取单个元素内容并解析它们。

于 2009-05-17T05:48:30.710 回答