我非常糟糕地构建了大型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:
如何使用动态XPATH获取<KOD>
标记的值?
例:
complex/fieldfv/*/KOD
其中'*'
表示任意。
答案 0 :(得分:0)
问题1:
由于看起来您正在使用Java来执行XPath,听起来您最好的选择是选择具有不一致名称的元素,迭代它们,并使用DOM API来获取元素名称。 / p>
您可以使用此XPath来选择它们:
/complex/field/fv/*
当迭代它们时(作为Node个对象),您可以使用.getNodeName()
获取每个对象的名称。
问题2:
是的,您可以使用此XPath选择所有KOD元素:
/complex/field/fv/*/KOD
但是,如果您按照问题1的答案中的建议迭代t.0
,t.1
等节点,则更好的方法是使用每个相应的元素作为起点使用相对XPath选择其中的KOD
元素:
KOD