Postgres中具有相同名称的多个根节点的XPath



我有以下情况。这是XML:

<Detect>
        <Flag>
        Yes
        </Flag>
        <Fraud_Alert_Code>
        3006
        </Fraud_Alert_Code>
        <Flag>
        No
        </Flag>
</Detect>

我使用以下查询:

xpath('//Detect/Flag/text()', response ::xml) as Flag

但它什么也不回。它适用于查询中的其他值。这里唯一的问题是:这是因为有两个根节点的名称相同吗?如果是,我如何将它们分开?

我尝试使用Flag[1]text[1]以及组合使用。。但是什么都不管用。。

您的xpath查询可以工作。

xpath()返回xml[](或xml array),因此可以使用数组索引来访问每个元素。但请注意,每个元素都是一个xml(实际上是一个内容片段,在您的案例中只包含文本节点),因此您可能需要将其强制转换为text(或将xpath()调用的整个结果强制转换为text[])以获取其文本内容。

还有:

  • 不能有多个根节点;您的根元素是Detect
  • //启动xpath使查询根本不关心根元素:它将查找任何Flag元素,它是任何Detect元素的子元素