2010-11-15 2 views
2

У меня есть файл карты сайта для поисковых систем:Работа с 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(...) Я всегда получаю нуль. Это очень странно.

+0

Покажите нам, что вы установили 'xDoc' в. – AakashM

+0

xDoc.Load (sitemap.xm); – Alexandre

+0

Вы разместили точку останова и фактически проверили, загружается ли XML в xDoc? –

ответ

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")));