读取没有名称空间的内部XML

时间:2014-01-01 00:17:07

标签: c# .net xml xmlreader

我试图将根元素的内部XML读作字符串,但XmlReader类是名称空间感知的。有没有办法忽略命名空间?我可以使用BCL中的任何类,只要它通过下面的NUNit测试。

[Test]
public void GetInnerXmlTest()
{
    string subject = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                     "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">" +
                         "<url><loc>abc</loc></url>" +
                         "<url><loc>def</loc></url>" +
                     "</urlset>";

    XDocument document = XDocument.Parse(subject);
    XmlReader xmlReader = document.FirstNode.CreateReader();
    xmlReader.MoveToContent();
    string innerXml = xmlReader.ReadInnerXml();
    //<url xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><loc>abc</loc></url><url xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><loc>def</loc></url>

    Assert.AreEqual("<url><loc>abc</loc></url><url><loc>def</loc></url>",
                    innerXml);
}

1 个答案:

答案 0 :(得分:0)

您必须先删除命名空间。 How to remove all namespaces from XML with C#?

使用innerXML后,你不能把它取出来。