2012-11-19 33 views
1

我正在使用WinRT应用程序,我应该准备好一些带有名称空间的XML。现在这对旧的.NET来说没问题,但是现在不再有XmlDocument.NameTable了。那么如何创建一个XmlNamespaceManager?在Windows 8商店应用程序中使用命名空间读取XML

var XmlDoc = new XmlDocument(); 

XmlDoc.Load(new FileStream("XMLFile1.xml",FileMode.Open,FileAccess.Read)); 
var nsm = new XmlNamespaceManager(XmlDoc.NameTable); 
nsm.AddNamespace("s", "http://api.facebook.com/1.0/"); 

回答

1

这是更容易使用LINQ来处理命名空间为XML,我相信这是你可以在Windows 8中使用什么:

XDocument doc = XDocument.Load(...); 
XNamespace ns = "http://api.facebook.com/1.0/"; 
XElement element = doc.Root.Element(ns + "foo"); 

读好LINQ到XML的介绍或教程,和你应该看看如何处理命名空间 - 但它确实比使用XmlDocument简单得多。你根本不需要命名空间管理器! (可能有一些他们仍然有用的情况 - 我不确定 - 但我肯定不记得使用它们自己与LINQ to XML。)

+0

我可能错过了一些东西,但元素( ...)方法抛出:“':'字符,十六进制值0x3A,不能包含在名称中。” –

+0

Ahh:重载+运算符:'Element(XName.Get(“foo”,“http://api.facebook.com/1.0/”))' –

相关问题