【发布时间】:2019-10-14 12:53:48
【问题描述】:
我必须进行不区分大小写的 XML 搜索。我编写了运行良好的 XPath 表达式,但是当我在 XPath 表达式中使用 translate 函数时出现错误。以下是运行良好的 XPath 表达式:
string upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string lower = "abcdefghijklmnopqrstuvwxyz";
string xpath = "/data/item[AID/@iskey='true' and AID/text() = 'fep'][not(*[@iskey][local-name() != 'AID' ])]";
string xpath1 = "/data/item[translate('Aid','" + upper + "','" + lower + "')]";
这是我的 XML:
<?xml version="1.0" encoding="utf-8"?>
<data>
<item>
<AID iskey="true">fep</AID>
<account>MS</account>
</item>
</data>
我想将translate 函数放在第一个 XPath 表达式中,如下所示:
string xpath = "/data/item[translate('AID','" + upper + "','" + lower + "')/@iskey='true' and translate('AID','" + upper + "','" + lower + "')/text() = 'fep'][not(*[@iskey][local-name() != translate('aid','" + upper + "','" + lower + "') ])]";
当我这样做时,我收到以下错误:
表达式必须计算为节点集。
这个 xpath 对我来说很好用。
string col="AID";
string xpath = "/data/item[col/@iskey='true' and col/text() = 'fep'][not(*[@iskey][local-name() != 'col' ])]";
现在我的要求是 col 值在任何情况下都可以是大写或小写,因此我希望更改我的 xpath,无论在哪种情况下,xml 中都存在数据,它都会返回结果。 如果用户提供援助或援助或援助,它会返回结果。
【问题讨论】: