我可以通过XmlReader.Create()禁用名称空间支持吗?

时间:2018-09-12 11:06:07

标签: c# .net

起初,我使用第一行,但奇怪的是,XPath无法正常工作。搜索Google并阅读StackOverflow帖子后,我发现它与名称空间有关。有答案,但是一个正在传递名称空间管理器或每个select方法的东西,这似乎使代码复杂化,另一个正在创建禁用名称空间的XmlTextReader(如第二行)。但是微软表示使用Create而不是直接创建它。如何使用Create(第一行)禁用名称空间?

//var r = XmlReader.Create(path); <-- Xpath does not work.
var r = new XmlTextReader(new FileStream(path, FileMode.Open)) { Namespaces = false }; //<-- Xpath works, but I am using XmlTextReader directly.
var doc = new XmlDocument();

while (r.Read())
{
    if (r.NodeType == XmlNodeType.Element && r.Name == "item")
    {
        var str = r.ReadOuterXml();
        doc.LoadXml(str);
        var tn = doc.SelectSingleNode("//itemname");
    }
}

我使用XmlReader和XmlDocument的组合,因为XML非常大,并且使用XmlDocument提取信息要容易得多。

0 个答案:

没有答案