我正在尝试使用XPath来查找具有特定值属性的节点。 下面的代码适用于普通字符串,但是当存在转义字符时失败,例如&或'。
string query = "question & answer";
query = query.replace("&", "&");
string nodePath = string.Format("/QUESTIONS/QUESTION[@text='{0}']", query);
XmlNode node = xmlDoc.SelectSingleNode(nodePath);
有没有找到包含转义字符的值的属性?
答案 0 :(得分:1)
不要替换特殊字符:
string query = "question & answer";
string nodePath = string.Format("/QUESTIONS/QUESTION[@text='{0}']", query);
XmlNode node = xmlDoc.SelectSingleNode(nodePath);
这将匹配
<QUESTION text="question & answer"/>
如果您需要使用单引号字符搜索某些内容,请对属性文本使用双引号:
string query = "question's answer";
string nodePath = string.Format("/QUESTIONS/QUESTION[@text=\"{0}\"]", query);
匹配
<QUESTION text='question's answer'/>
如果文本中有单引号,请使用双引号作为文本属性值。