动态xml标记的配置单元xpath

eni9jsuy  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(394)

我有非常糟糕的结构化大型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 哪里 '*' 意味着任何。

mum43rcc

mum43rcc1#

问题1:
因为看起来您正在使用java来执行xpath,所以您的最佳选择似乎是选择名称不一致的元素,对它们进行迭代,然后使用domapi来获取元素名称。
可以使用此xpath选择它们:

/complex/field/fv/*

在迭代它们(作为节点对象)时,可以使用 .getNodeName() 得到每个人的名字。
问题2:
是的,您可以使用此xpath选择所有kod元素:

/complex/field/fv/*/KOD

但是,如果您在 t.0 , t.1 如问题1的答案中所建议的,更好的方法是使用这些各自的元素中的每一个作为选择节点的起点 KOD 元素,使用相对xpath:

KOD

相关问题