我对xml解析和java是新手。我正在尝试使用xpath解析xml。xml如下所示
<Root>
<AL1>
<AL1.1>1</AL1.1>
<AL1.2>1</AL1.2>
<AL1.3>
<CX1.1>Bala</CX1.1>
</AL1.1>
<AL1>
<AL1>
<AL1.1>2</AL1.1>
<AL1.2>1</AL1.2>
<AL1.3>
<CX1.1>Bala1</CX1.1>
</AL1.1>
<AL1>
<AL1>
<AL1.1>3</AL1.1>
<AL1.2>1</AL1.2>
<AL1.3>
<CX1.1>Bala2</CX1.1>
</AL1.1>
<AL1>
</Root>
为了获得cx1.1 value/al1/al1.3/cx1.1/text(),我构建了如下xpath。到目前为止,我只能得到第一次出现,如果cx1.1。
XPathExpression expr = xpath.compile("/AL1/AL1.3/CX1.1/text()");
result = (String) expr.evaluate(doc.XPathConstants.STRING);
你们能告诉我一种使用xpath在列表中获取cx1.1所有不同值的方法吗。非常感谢您的帮助。谢谢您。
2条答案
按热度按时间icnyk63a1#
首先,将xml固定为格式良好的:
这个
AL1.3
开始标记不应用AL1.1
结束标记,以及你的
AL1
开始标记应该用AL1
结束标记,而不是开始标记。更正的xml:
更正的xpath
然后修复xpath以考虑
Root
元素,或者无视
CX1.1
所有要素:更正的java
最后,请参阅marygrass关于如何修复java代码以使给定类型的
XPathConstants.NODESET
,不是XPathConstants.STRING
.n3ipq98p2#
首先,您提供的xml格式不正确,但一旦格式正确,我将执行以下操作:
将xpath查询的结果保存在
NodeList
然后遍历它以将每个值保存在List<String>
有一个循环。