我有一个包含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,但已弃用。 我真的很失落。
三江源, 卢卡斯。
答案 0 :(得分:2)
使用DocumentBuilder 来解析任何类型的输入流。这是一个example,可以从文件中读取类似于您的类。
答案 1 :(得分:1)
有很多对象到xml的绑定库可以完全按照你的意愿行事,但它们往往是相当庞大的工具。
对于这个简单的例子,自己处理dom是有道理的。 justinhj建议使用内置的java库是一个很好的开始,虽然这有时会变得很难看,因为jdk通常不会为你提供一个xml解析器,要求你在幕后神奇地插入你自己的。
我倾向于选择jdom来做这类事情。它实际上与DocumentBuilder路由相同,但类似且仅部分兼容。
答案 2 :(得分:1)
为什么要使用DOM?
如果您只是想读入并将xml转换为对象,那么我建议使用STAX,因为SAX比DOM快,但编码太多,STAX更好,您可以在下面了解更多信息。 https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/programming-and-development/?p=639
答案 3 :(得分:1)
我建议你看看XStream。它支持将XML转换为对象。你可以给它XML,它会给你一个你想要的对象列表。
答案 4 :(得分:0)
根据我的经验,DOM对于这种事情很有用,因为它与SAX / STAX相比具有较低的学习曲线,即使它没有那么快或内存效率。获得DOM文档后,可以对文档使用XPath查询来获取单个元素内容并解析它们。