编译xpath表达式 - 具有无效标记

时间:2016-06-20 03:54:02

标签: c# .net xml xpath

我正在尝试编译一个动态生成的xpath表达式,并接收一个异常 - “它有一个无效的标记”。

text =  GetText(); // has this value: /root/Info/PublisherName1 = "abcd"
XPathResultType result = XPathExpression.Compile(text).ReturnType;

我尝试使用以下代码转义双引号,但仍然收到相同的异常:

text = text.Replace("\"", "\\\"");
text = text.Replace("'", "\\'");

在尝试如上所述转义引号后,字符串仍然包含单引号,而在调试器中看不到任何反斜杠。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

对于来自/root/Info/PublisherName1 = "abcd"命名空间

的方法,

System.Xml.XPath是无效的XPath

我相信你正在寻找这样的东西: /root/Info/PublisherName1[text() = "abcd"]

答案 1 :(得分:1)

Expression是一个有效的XPath表达式,问题是引用来自Microsoft Word文件,我们需要用直引号替换智能引号,如下所示:

text = text.Replace('\u2018', '\'')
.Replace('\u2019', '\'')
.Replace('\u201c', '\"')
.Replace('\u201d', '\"')
.Replace('\u201e', '\"')
.Replace('\u2033', '\"');

然后,它没有任何问题。

对不起@Kirill,我必须取消选择你的​​答案。