我有非常糟糕的结构化大型xml来处理。下面是示例代码。
<complex>
<field name="TEST_ATTR">
<fv>
<t.0>
<KOD>12000011</KOD>
<FLAG>sX</FLAG>
</t.0>
<t.1>
<KOD>s12000021</KOD>
<FLAG>sN</FLAG>
</t.1>
<t.2>
<KOD>s12000031</KOD>
<FLAG>sN</FLAG>
</t.2>
<t.3>
<KOD>s12000051</KOD>
<FLAG>sN</FLAG>
</t.3>
<t.4>
<KOD>s12000061</KOD>
<FLAG>sN</FLAG>
</t.4>
<t.5>
<KOD>s12000071</KOD>
<FLAG>sN</FLAG>
</t.5>
<t.6>
<KOD>s12000081</KOD>
<FLAG>sN</FLAG>
</t.6>
</fv>
</field>
</complex>
问题1:如何从这个xml节点名(如t.0等)中提取??使用xpath或其他实用程序?!
问题2:如何获得价值 <KOD>
使用动态xpath标记?例子: complex/fieldfv/*/KOD
哪里 '*'
意味着任何。
1条答案
按热度按时间mum43rcc1#
问题1:
因为看起来您正在使用java来执行xpath,所以您的最佳选择似乎是选择名称不一致的元素,对它们进行迭代,然后使用domapi来获取元素名称。
可以使用此xpath选择它们:
在迭代它们(作为节点对象)时,可以使用
.getNodeName()
得到每个人的名字。问题2:
是的,您可以使用此xpath选择所有kod元素:
但是,如果您在
t.0
,t.1
如问题1的答案中所建议的,更好的方法是使用这些各自的元素中的每一个作为选择节点的起点KOD
元素,使用相对xpath: