使用XML文件

时间:2010-11-15 10:40:26

标签: c# xml

我有搜索引擎的站点地图文件:

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9             http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
  <url>
    <loc>http://site.com/</loc>
  </url>
  <url>
    <loc>http://site.com/about</loc>
  </url>
  <url>
    <loc>http://site.com/contacts</loc>
  </url>
  <url>
    <loc>http://site.com/articles/article1.html</loc>
  </url>
  <url>
    <loc>http://site.com/users/123</loc>
  </url>
</urlset>

如何插入新节点?

当我使用xDoc.Element("url")xDoc.Element("urlset")xDoc.Element("xml")Doc.Elements(...)时,我始终会为空。这很奇怪。

1 个答案:

答案 0 :(得分:0)

下面的代码显示了如何在xml中导航以及如何插入新节点

XDocument xDoc = XDocument.Load("sitemap.xml");
XNamespace ns = xDoc.Root.Name.Namespace;

// Navigation within the xml 
XElement urlset = xDoc.Element(ns + "urlset");
Console.WriteLine(urlset.Name.LocalName);    // -> "urlset"

IEnumerable<XElement> urls = urlset.Elements(ns + "url");

foreach (var url in urls)
{
    XElement loc = url.Element(ns + "loc");
    Console.WriteLine(loc.Value);    // -> "http://site.com/", ...                
}

// Inserting a new node under "urlset" node
urlset.Add(
    new XElement(ns + "url",
        new XElement(ns + "loc",
            "http://site.com//questions/4183526")));