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可以随便取名字。但不能说空