在JAVA中处理包含XML的字符串的最有效方法

时间:2009-05-17 04:04:35

标签: java xml jsp dom javabeans

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

存储在String变量中的XML:

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

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

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,但已弃用。 我真的很失落。

三江源, 卢卡斯。

5 个答案:

答案 0 :(得分:2)

使用DocumentBuilder 来解析任何类型的输入流。这是一个example,可以从文件中读取类似于您的类。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

有很多对象到xml的绑定库可以完全按照你的意愿行事,但它们往往是相当庞大的工具。

对于这个简单的例子,自己处理dom是有道理的。 justinhj建议使用内置的java库是一个很好的开始,虽然这有时会变得很难看,因为jdk通常不会为你提供一个xml解析器,要求你在幕后神奇地插入你自己的。

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

答案 3 :(得分:1)

为什么要使用DOM?

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

答案 4 :(得分:0)

根据我的经验,DOM对于这种事情很有用,因为它与SAX / STAX相比具有较低的学习曲线,即使它没有那么快或内存效率。获得DOM文档后,可以对文档使用XPath查询来获取单个元素内容并解析它们。

豫ICP备18024241号-1