读书人

xml SelectSingleNode获取的根节点为n

发布时间: 2012-08-28 12:37:01 作者: rapoo

xml SelectSingleNode获取的根节点为null问题
源代码如下:
XmlDocument xmldoc = new XmlDocument();
XmlDeclaration xmldecl;
xmldecl = xmldoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmldoc.AppendChild(xmldecl);

XmlElement xmlelem = xmldoc.CreateElement("", "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
xmldoc.AppendChild(xmlelem);

XmlNamespaceManager xnsm = new XmlNamespaceManager(xmldoc.NameTable);
xnsm.AddNamespace("xx", "http://www.sitemaps.org/schemas/sitemap/0.9");
XmlNode root = xmldoc.SelectSingleNode("/urlset",xnsm);
XmlElement xmlnode = xmldoc.CreateElement("", "url", "");
XmlElement xml1 = xmldoc.CreateElement("loc");
xml1.InnerText = url;
xmlnode.AppendChild(xml1);
XmlElement xml2 = xmldoc.CreateElement("lastmod");
xml2.InnerText = currenttime;
xmlnode.AppendChild(xml2);
XmlElement xml3 = xmldoc.CreateElement("changefreq");
xml3.InnerText = "always";
xmlnode.AppendChild(xml3);
XmlElement xml4 = xmldoc.CreateElement("priority");
xml4.InnerText = "0.7";
xmlnode.AppendChild(xml4);
root.AppendChild(xmlnode);
xmldoc.Save(pathfile);

由于root为null,root.AppendChild报错,请教高手们如何解决!

[解决办法]
临时解决的话,可以这样:

XmlNode root = xmldoc.DocumentElement;直接取出根,你可以输出root的name看看为何select不出来,我估计是你

XmlNamespaceManager xnsm = new XmlNamespaceManager(xmldoc.NameTable);
xnsm.AddNamespace("xx", "http://www.sitemaps.org/schemas/sitemap/0.9");

这两句导致的,

你可以这样试试看:

XmlNode root = xmldoc.SelectSingleNode("/urlset");

或者,

XmlNode root = xmldoc.SelectSingleNode("/xx.urlset",xnsm);
[解决办法]
不是告诉你怎么取了吗?
名称空间为空和不为空,SelectSingleNode的方法都是一样的,必须加
xnsm.AddNamespace("nssss", "http://www.sitemaps.org/schemas/sitemap/0.9");
XmlNode root = xmldoc.SelectSingleNode("/nssss:urlset",xnsm);


nssss可以随便取名字。但不能说空

读书人网 >C#

热点推荐