我想在Java中使用XPath读取XML数据,因此对于我收集的信息,我无法根据我的要求解析XML .
这是我想要做的:
Get XML file from online via its URL, then use XPath to parse it, I want to create two methods in it. One is in which I enter a specific node attribute id, and I get all the child nodes as result, and second is suppose I just want to get a specific child node value only
<?xml version="1.0"?>
<howto>
<topic name="Java">
<url>http://www.rgagnonjavahowto.htm</url>
<car>taxi</car>
</topic>
<topic name="PowerBuilder">
<url>http://www.rgagnon/pbhowto.htm</url>
<url>http://www.rgagnon/pbhowtonew.htm</url>
</topic>
<topic name="Javascript">
<url>http://www.rgagnon/jshowto.htm</url>
</topic>
<topic name="VBScript">
<url>http://www.rgagnon/vbshowto.htm</url>
</topic>
</howto>
在上面的例子中,我想读取所有元素,如果我通过@name搜索,还有一个函数,我只想从@name'Javascript'中获取url只返回一个节点元素 .
7 回答
你需要这样的东西:
然后调用
expr.evaluate()
传入该代码中定义的文档和您期望的返回类型,并将结果转换为结果的对象类型 .如果您需要有关特定XPath表达式的帮助,您应该将其作为单独的问题提出(除非这是您首先提出的问题 - 我理解您的问题是如何在Java中使用API) .
编辑:(对评论的回应):这个XPath表达式将为您提供PowerBuilder下第一个URL元素的文本:
这将为您提供第二个:
你得到这个代码:
如果您不知道给定节点中有多少个URL,那么您应该执行以下操作:
然后遍历NodeList .
你可以试试这个 .
XML文档
保存为
employees.xml
.Parser类
该课程有以下方法
列出项目
将返回输入ID的Employee Name的方法 .
将返回员工姓名列表的方法,其年龄大于输入年龄 .
将返回女性员工姓名列表的方法 .
源代码
入门示例:
xml文件:
Java代码:
下面是使用vtd-xml处理xpath的示例...对于重型XML处理,它是首屈一指的 . 这是最近关于这个主题的论文Processing XML with Java – A Performance Benchmark
扩展@bluish和@Yishai的优秀答案,以下是如何使NodeLists和节点属性支持迭代器,即
for(Node n: nodelist)
接口 .使用它像:
和
代码:
使用XPathFactory,SAXParserFactory和StAX (JSR-173)读取XML文件 .
使用XPath获取节点及其子数据 .
XML文档
输出给定的XPathExpression:
See this link为我们自己实施
NamespaceContext
这告诉你如何
将XML文件读入
DOM
使用
XPath
筛选出一组Nodes
对每个提取的
Nodes
执行特定操作 .我们将使用以下语句调用代码
在我们的例子中,我们希望使用
"//book/creators/creator/creatorName"
作为xpath从book.xml
打印一些creatorNames
,以在与XPath
匹配的每个节点上执行printNode
操作 .Full code
Prints
对于
book.xml