如何用XQuery提取XML中首个d:personIdExternal节点值?
解决XML提取第一个d:personIdExternal值的问题
你的代码失败主要有两个原因:未处理XML命名空间,以及没有限制只取第一个节点。以下是修正后的方案:
修正后的XQuery代码
declare default element namespace "http://www.w3.org/2005/Atom"; declare namespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices"; declare namespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; let $first-person-id := /feed/entry[1]/content/m:properties/d:personIdExternal/text() return <Element> <personIdExternal>{$first-person-id}</personIdExternal> </Element>
代码说明
- 命名空间声明:XML里的
feed、entry属于默认Atom命名空间,m:properties、d:personIdExternal分别属于m和d命名空间,必须先声明才能正确定位节点。 - 定位第一个节点:用
entry[1]直接选取第一个<entry>节点,再逐层定位到d:personIdExternal的文本值。 - 输出XML结构:返回你需要的
<Element>包裹的结果,仅包含第一个匹配的ID值。
输出结果
<Element> <personIdExternal>55229507</personIdExternal> </Element>
内容的提问来源于stack exchange,提问作者Sumesh
相关产品推荐
相关产品推荐

