gpt4 book ai didi

xquery - 使用 XQUERY 检索属性值

转载 作者:行者123 更新时间:2023-12-04 06:02:18 29 4
gpt4 key购买 nike

是否可以使用 XQUERY 来检索属性 filename从以下 XML?我正在尝试使用 /preFileDoc/inpXML/@filename但它不起作用......

<?xml version="1.0"?>
<preFileDoc xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<senderId>ABC</senderId>
<receiverId>XYZ</receiverId>
<tranxCode>A001</tranxCode>
<inpXML version="1.0" encoding="UTF-8">
<soap-env:Envelope>
<soap-env:Header msgcode="SPPCONVAKT" orig-system="002FTB" refid="65355ff50a172064484bf9da64c1e245" timestamp="2009-02-11 21:00:10.741" filename="SPPCONVAKT20090128001.dat"/>
<soap-env:Body>
text1
text2
</soap-env:Body>
</soap-env:Envelope>
</inpXML>
</preFileDoc>

ps:有时是 filename属性作为 fileName 发送在传入的 XML 中..想从属性中检索值 @filename@fileName ..它可以在单个XQUERY中实现吗?谢谢你的建议...

最佳答案

我认为您的 XPath 不完整。最后一个子步//preFileDoc/inpXML/@filename只匹配 inpXML 的属性元素,而不是它的后代。

解决问题的一种方法是 // -步:

/preFileDoc/inpXML//@filename

请注意,这将找到所有名为 filename 的属性。在 soapenv:Body , 也。

因此,更可靠的方法是声明 soapenv XQuery 中的前缀:
declare namespace soap-env="http://schemas.xmlsoap.org/soap/envelope/";

return /preFileDoc/inpXML//soap-env:Header/@filename

最后, filename 的不同大小写可以通过指定两者来解决:
declare namespace soap-env="http://schemas.xmlsoap.org/soap/envelope/";

return /preFileDoc/inpXML//soap-env:Header/(@filename | @fileName)

关于xquery - 使用 XQUERY 检索属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8800461/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com