我正在尝试使用SelectNodes,其中属性包含带撇号的文本

该属性为oor:path,该节点如下所示:

<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/OrderList">

我已经尝试过使用此代码(但失败了)...
XmlNodeList xnList = xml.SelectNodes("/oor:items/item[contains(@oor:path, '[&apos;PickList&apos;]/OrderList')]", nsMgr);

请帮忙!

//安德斯

最佳答案

在XPath解析器可以看到之前,&apos;实体被解析为单引号。因此,从其角度看,它们不能与“真实”单引号区分开。

您可以使用转义的双引号将参数定为contains(),并在表达式中使用单引号:

XmlNodeList xnList = xml.SelectNodes(
    "/oor:items/item[contains(@oor:path, \"['PickList']/OrderList\")]", nsMgr);

或者,或者使用逐字字符串文字:
XmlNodeList xnList = xml.SelectNodes(
    @"/oor:items/item[contains(@oor:path, ""['PickList']/OrderList"")]", nsMgr);

关于c#-4.0 - 具有包含撇号的属性的SelectNodes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7865337/

10-13 01:24