我试图将根元素的内部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);
}
答案 0 :(得分:0)
您必须先删除命名空间。 How to remove all namespaces from XML with C#?
使用innerXML后,你不能把它取出来。