C#中的字符串连接和标记化xpath函数
作者:互联网
对于ASP.NET项目,我编写了一个控制器操作和一个表单,用户可以在其中输入xpath表达式并从服务器上的xml文件中检索结果.
它工作正常,即使有一些字符串函数,如concat,substring-before和substring-after.
为了摆脱输出中的一些逗号,我尝试使用string-join和tokenize.但是,通过使用这些函数之一,我最终得到了XPathException.
XPathDocument doc = new XPathDocument(@"C:\temp.xml");
XPathNavigator navigator = doc.CreateNavigator();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(navigator.NameTable);
nsmgr.AddNamespace("x", "systemInfo");
var temp = navigator.Evaluate("string-join(tokenize('The quick brown fox', ' '), ';')", nsmgr); // Exception
我没有正确使用这些xpath函数吗?
解决方法:
string-join和tokenize是XPath 2.0函数,但.net的XPathNavigator只支持XPath 1.0.您不能使用这些函数,并且没有与它们等效的XPath 1.0.
要么在C#中执行XPath之外的字符串操作,要么使用扩展功能的库,您可能需要查看Saxon或BaseX,它们都为C#提供API.还有一些更多,包括开源和商业.
针对这个特定示例的XPath 1.0 hack:translate(‘The quick brown fox’,”,’;’)将用分号替换所有出现的空格.
标签:c,xml,xpath,xpathnavigator 来源: https://codeday.me/bug/20190624/1279991.html