XPath查找具有非法字符的属性

时间:2014-04-29 09:45:13

标签: c# xml xpath

我正在尝试使用XPath来查找具有特定值属性的节点。 下面的代码适用于普通字符串,但是当存在转义字符时失败,例如&或'。

string query = "question & answer";
query = query.replace("&", "&");

string nodePath = string.Format("/QUESTIONS/QUESTION[@text='{0}']", query);

XmlNode node = xmlDoc.SelectSingleNode(nodePath);

有没有找到包含转义字符的值的属性?

1 个答案:

答案 0 :(得分:1)

不要替换特殊字符:

string query = "question & answer";
string nodePath = string.Format("/QUESTIONS/QUESTION[@text='{0}']", query);
XmlNode node = xmlDoc.SelectSingleNode(nodePath);

这将匹配

<QUESTION text="question &amp; answer"/>

如果您需要使用单引号字符搜索某些内容,请对属性文本使用双引号:

string query = "question's answer";
string nodePath = string.Format("/QUESTIONS/QUESTION[@text=\"{0}\"]", query);

匹配

<QUESTION text='question&apos;s answer'/>

如果文本中有单引号,请使用双引号作为文本属性值。