c# - 用于查找具有非法字符的属性的 XPath

标签 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);

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

最佳答案

只是不要替换特殊字符:

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'/>

如果文本中有单引号,只需对文本属性值使用双引号。

关于c# - 用于查找具有非法字符的属性的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361094/

相关文章:

c# - 为什么通过字符串进行的往返转换对于 double 不安全?

c# - SQL Server (2008) 将 ArrayList 或字符串传递给 SP 以进行 IN()

java - 创建简单的 Spring AOP 时出现异常抛出建议演示

xml - XSLT:属性内的 'xsl:value-of'

android - 在 Android 中为 POST 请求发送 XML

c# - XPath:根据另一个节点选择一个节点?

xml - XSLT - 将一个节点中的值替换为其前一个兄弟节点的值

c# - 我应该有一个比它的语句长的方法名吗?

c# - 异常的 WCF 客户端行为

python - Scrapy爬虫爬取后未获取数据