如何处理microsoftxpath命名空间&;bug”;

本文关键字:命名空间 bug microsoftxpath 何处理 处理 | 更新日期: 2023-09-27 18:23:53

当使用xPath(例如SelectNodes)处理xmlDocument时,文档中有一种行为,它包含任何命名空间声明,我认为这是一个错误:

如果xml文档包含任何名称空间声明(例如xmlns=…..或类似的内容),则xquerry将始终为空。

处理此问题的一种懒惰方法是在将xml文本加载到XmlDocument:之前,对其运行以下代码

pg = Regex.Replace(pg, @"xmlns's*'='s*""[^""]*""", "");
pg = Regex.Replace(pg, @"xmlns's*'='s*'[^']*'", "");

我们还可以使用XmlNamespaceManager将命名空间信息添加到xpath调用中。我发现这两种方法都很麻烦(我通常不知道软件将要使用的文档的名称空间,而且,我真的不在乎)。

有没有一种简单易用的方法可以禁用微软XPath解析器的这种行为,这也"感觉"正确?

如何处理microsoftxpath命名空间&;bug”;

如果您真的不关心名称空间,那么我认为从XML中剥离它们似乎是正确的。不过,我不建议在生产环境中使用这种方法,因为您可能应该关心名称空间。