2010-11-15 7 views
2

J'ai un fichier sitemap pour les moteurs de recherche:Travail avec fichier 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> 

Comment insérer un nouveau noeud?

Lorsque j'utilise xDoc.Element("url") ou xDoc.Element("urlset") ou xDoc.Element("xml") ou Doc.Elements(...), je reçois toujours à zéro. C'est très étrange.

+0

Montrez-nous ce que vous définissez 'xDoc' à. – AakashM

+0

xDoc.Load (sitemap.xm); – Alexandre

+0

Avez-vous placé un point d'arrêt et vérifié si le fichier XML est chargé dans xDoc? –

Répondre

0

Le code ci-dessous montre comment naviguer dans le xml et comment insérer un nouveau nœud

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