JAVA中处理包含XML的字符串的最有效方法
我有一个字符串,其中包含XML节点,我试图使用DOM解析来处理这个字符串,以提取节点值并将它们存储在局部变量中 存储在字符串变量中的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>
<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();
...
}
}