gpt4 book ai didi

c# - XPath 不适用于 SelectSingleNode

转载 作者:行者123 更新时间:2023-11-30 23:06:45 24 4
gpt4 key购买 nike

private const string TECHACCOUNTAMTITEM_AMT_XPATH = @"//Part[translate(@Type, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'instalment']/acord:Jv-Ins-Reinsurance/acord:TechAccount/acord:Subaccount/acord:TechAccountAmtItem[translate(@Type, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') != 'ipt' and translate(@AmtStatus, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') != 'informational']/acord:Amt";

var xmlNamespaceManager = this._namespaceManager.GetNamespaceManager(this.TransactionPayload.OuterXml);
var techAccountAmtItemAmt = Decimal.Parse(this.TransactionPayload.SelectSingleNode(TECHACCOUNTAMTITEM_AMT_XPATH, xmlNamespaceManager).InnerText);

上面两条语句给出的值是4500。

但我不想使用翻译,只想直接使用它来获取值(value)。

似乎 != 在下面不起作用并且没有获取值并导致 null 。

这是我正在尝试实现但无法正常工作的新 Xpath。

private const string TECHACCOUNTAMTITEM_AMT_XPATH = @"//Part[@Type = 'Instalment']/acord:Jv-Ins-Reinsurance/acord:TechAccount/acord:Subaccount/acord:TechAccountAmtItem[@Type != 'ipt' and @AmtStatus != 'informational']/acord:Amt";

我怎样才能达到同样的效果?

最佳答案

原因是 != 要求属性存在,而 translate 如果属性缺失也会产生结果。

您需要使用 not() 代替:

.../acord:‌​TechAccountAmtItem[not(@‌​Type = 'ipt') and not(@AmtStatus = 'informational')]/...

这假设 Type 也可能丢失。如果没有,您可以使用 @Type != 'ipt' 代替。

关于c# - XPath 不适用于 SelectSingleNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925166/

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