源代码如下:
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报错,请教高手们如何解决!
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报错,请教高手们如何解决!
2. 为null时先添加该节点,然后继续后面的操作
XmlElement xmlelem = xmldoc.CreateElement("", "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
xmldoc.AppendChild(xmlelem);我调试过,这儿能生成
还是同样的问题
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(pathfile); XmlNode root = xmldoc.SelectSingleNode("/urlset");这个时候也得用SelectSingleNode定位吧,一样报错,求解!
xnsm.AddNamespace("xx", "http://www.sitemaps.org/schemas/sitemap/0.9");这两句导致的,你可以这样试试看:XmlNode root = xmldoc.SelectSingleNode("/urlset");或者,XmlNode root = xmldoc.SelectSingleNode("/xx.urlset",xnsm);
XmlNode root = xmldoc.SelectSingleNode("/urlset",xnsm);-->
XmlNode root = xmldoc.SelectSingleNode("/xx:urlset", xnsm);
这是生成网站地图的代码,加上xx是总报错我才加上的,要求的格式是不能有xx:urlset的
现在贴上代码,大家帮忙看看为什么SelectSingleNode总为空 XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(pathfile); XmlNode root = xmldoc.SelectSingleNode("/urlset");
XmlElement xmlnode = xmldoc.CreateElement("", "url", "http://www.sitemaps.org/schemas/sitemap/0.9"); XmlElement xml1 = xmldoc.CreateElement("","loc","http://www.sitemaps.org/schemas/sitemap/0.9");
xml1.InnerText = url;
xmlnode.AppendChild(xml1);
XmlElement xml2 = xmldoc.CreateElement("","lastmod","http://www.sitemaps.org/schemas/sitemap/0.9");
xml2.InnerText = currenttime;
xmlnode.AppendChild(xml2);
XmlElement xml3 = xmldoc.CreateElement("","changefreq","http://www.sitemaps.org/schemas/sitemap/0.9");
xml3.InnerText = "always";
xmlnode.AppendChild(xml3);
XmlElement xml4 = xmldoc.CreateElement("","priority","http://www.sitemaps.org/schemas/sitemap/0.9");
xml4.InnerText = "0.7";
xmlnode.AppendChild(xml4);
root.AppendChild(xmlnode); xmldoc.Save(pathfile);
要使用名称空间,必须要加,要不然就去掉名称空间啊
XmlElement xmlelem = xmldoc.CreateElement("", "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");这里是你创建的名称空间
XmlNode root = xmldoc.DocumentElement好使了
XmlNode root = xmldoc.SelectSingleNode("/urlset");还是报错
XmlElement xmlelem = xmldoc.CreateElement("", "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
就改成
XmlElement xmlelem = xmldoc.CreateElement("urlset");不加是不行的
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.域名.com</loc>
<lastmod>2011-12-25</lastmod>
<changefreq>hourly</changefreq>
<priority>1.0</priority>
</url>
</urlset>用XmlElement xmlelem = xmldoc.CreateElement("urlset");不行啊
用属性也能行,给urlset加上属性xmlns和空间的写法有区别吗?
名称空间为空和不为空,SelectSingleNode的方法都是一样的,必须加
xnsm.AddNamespace("nssss", "http://www.sitemaps.org/schemas/sitemap/0.9");
XmlNode root = xmldoc.SelectSingleNode("/nssss:urlset",xnsm);
nssss可以随便取名字。但不能说空