Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA中处理包含XML的字符串的最有效方法_Java_Xml_Jsp_Dom_Javabeans - Fatal编程技术网

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

JAVA中处理包含XML的字符串的最有效方法,java,xml,jsp,dom,javabeans,Java,Xml,Jsp,Dom,Javabeans,我有一个字符串,其中包含XML节点,我试图使用DOM解析来处理这个字符串,以提取节点值并将它们存储在局部变量中 存储在字符串变量中的XML: <carGarage> <car> <make>Chrysler</make> <color>Red</color> </car> <car> <make>Musano</make>

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

存储在字符串变量中的XML:

<carGarage>
   <car>
      <make>Chrysler</make>
      <color>Red</color>
   </car>
   <car>
      <make>Musano</make>
      <color>Blue</color>
   </car>
</carGarage>
最好的方法是什么? 我已经研究了StringBufferInputStream,但这是不推荐的。 我真的很迷路

谢谢,,
Lucas。

看看如何从任何类型的输入流解析。下面是一个从文件中读取类似于您的类的示例

有很多对象到xml的绑定库,它们完全满足您的需要,但它们往往是相当庞大的工具

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

我倾向于喜欢这种东西。它实际上与DocumentBuilder路线相同,但类似,只是部分兼容。

为什么要使用DOM

如果您试图读入xml并将其转换为对象,那么我建议使用STAX,因为SAX比DOM快,但编码太多,STAX更好,您可以在下面了解更多。

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

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

Hi Justin,我一直在使用DocumentBuilderFactory和Document Builder,但是当我打印出值时,它会得到[#Document:NULL]…这可能是因为我没有返回Document元素节点,而是返回它下面的第一个子节点,在这种情况下,标签?上面有标签吗?也许这只是因为找不到任何数据。就个人而言,我会选择SAX(),因为我已经习惯了它,而且我不认为SAX编码太多,因为它是相对简单的代码,与stax不同,它是模式无关的代码(不管它值多少)。我使用SAX多年了,但我发现stax更简单,所以我倾向于这样,因为,对于sax,我编写了自己的代码来处理一切。
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();
      ...
    }
}