c# - Xpath 错误有一个无效的 token

标签 c# xml xpath

我有以下 C# 代码:

var selectNode = xmlDoc.SelectSingleNode("//CodeType[@name='" + codetype + 
    "']/Section[@title='" + section + "']/Code[@code='" + code + "' and 
    @description='" + codedesc + "']") as XmlElement;

当我运行我的代码时,它引发了错误“上面的语句有一个无效的标记”

这些是上述语句的值。

codeType=cbc
section="Mental"
codedesc="Injection, enzyme (eg, collagenase), palmar fascial cord (ie, 
    Dupuytren's contracture"

最佳答案

注意到 codedesc 中的撇号 (') 了吗?

你需要以某种方式逃避它。 XPath 解释器将其视为字符串定界符,并且不知道如何处理它后面的另一个撇号。

一种方法是用双引号而不是撇号将字符串括起来。

因此您的代码可能会变成:

var selectNode = xmlDoc.SelectSingleNode(
    "//CodeType[@name='" + codetype + "']" +
    "/Section[@title='" + section + "']" +
    "/Code[@code=\"" + code + "' and @description='" + codedesc + "\"]") 
    as XmlElement;

(注意在第四行,撇号(')变成了双引号(\"))

虽然这种方法适用于您提供的数据,但您仍然不是 100% 安全的:其他记录本身可能包含双引号。如果发生这种情况,我们也需要为这种情况考虑一些事情。

关于c# - Xpath 错误有一个无效的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437684/

相关文章:

c# - Asp.net MVC 4 和 SolrNet 编程

html - 调试 'Error loading stylesheet: XPath parse failure: Name or Nodetype test expected:'

xml - 从 xml 文档中获取不同的命名空间

c# - 从 DocumentDb 中删除特定文档

c# - 从 amazon s3 流式传输文件,并可在 C# 中进行查找

xpath - Xpath查询以进行事件过滤

selenium - 在 selenium webdriver 中将 xpath 转换为 css 无法正常工作?

python - 如何使用 Xpath 在 iframe 中选择元素?

c# - 不包括文本框的 Word 自动化查找和替换

json - Spring Boot Controller 建议 - 如何返回 XML 而不是 JSON?