我有几个后缀不是.xml,而是.component的xml文件现在我想在c#程序中处理它们,但似乎c#甚至找不到这些xml文件的根元素
var doc = new XmlDocument();
doc.Load(path); // MG: edited to Load based on comment
XmlNode root = doc.SelectSingleNode("rootNodename");
似乎根为空,我该如何应对?
我有几个后缀不是.xml,而是.component的xml文件现在我想在c#程序中处理它们,但似乎c#甚至找不到这些xml文件的根元素
var doc = new XmlDocument();
doc.Load(path); // MG: edited to Load based on comment
XmlNode root = doc.SelectSingleNode("rootNodename");
似乎根为空,我该如何应对?
鉴于您已经解决了Load
/LoadXml
混淆,我预计问题是名称空间;你有示例 xml 吗?使用命名空间处理 xml 变得...“有趣”;-p
例如:
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<test xmlns='myFunkyUri' value='abc'/>");
// wrong; no namespace consideration
XmlElement root = (XmlElement)doc.SelectSingleNode("test");
Console.WriteLine(root == null ? "(no root)" : root.GetAttribute("value"));
// right
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("x", "myFunkyUri"); // x is my alias for myFunkyUri
root = (XmlElement)doc.SelectSingleNode("x:test", nsmgr);
Console.WriteLine(root == null ? "(no root)" : root.GetAttribute("value"));
请注意,即使您的 xml 声明了 xml 别名,您仍可能需要为您的命名空间管理器重新声明它们。
LoadXml 采用 XML 字符串,而不是文件路径。尝试加载。加载不关心文件扩展名。
这是加载文档的链接:http: //msdn.microsoft.com/en-us/library/system.xml.xmldocument.load.aspx
我遇到了这个问题试试这个:在rootNodename前面放一个破折号而不是这个:XmlNode root = doc.SelectSingleNode("rootNodename");
这样做: XmlNode root = doc.SelectSingleNode("/rootNodename");