2010-11-18 6 views
1

J'utilise actuellement DOM pour naviguer dans xml dans mon projet C#. Cependant, certains documents XML que j'ai rencontrés récemment sont un peu différents.Lecture de XML différent avec C#/DOM

alors qu'habituellement je:

<?xml version="1.0" encoding="UTF-8"?> 
<feed xmlns="http://www.w3.org/2005/Atom"> 
    <entry> 
    <author> 
     <name>Me =)</name> 
    </author> 
    <content> 
     <somefield1> 
     <Subfield>subfield data</subfield> 
     </somefield> 
    </content> 
    </entry> 
</feed> 

et peut naviguer à l'aide d'entrée foreach entrée, selectSingleNode (/ content/somefield1/sous-champ), InnerText pour obtenir les données de la sous-champ pour chaque entrée, le nouveau XML ressemble à ceci:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<atom:feed xmlns:atom="http://www.w3.org/2005/Atom"> 
    <atom:entry> 
     <atom:author> 
      <name>Me =)</name> 
     </atom:author> 
     <atom:content> 
      <somefield1> 
      <Subfield>subfield data</subfield> 
      </somefield> 
     </atom:content> 
    </atom:entry> 
</atom:feed> 

selectSingleNode (/ atom: content/somefield1/sous-champ) est certainement pas aller travailler ... des suggestions?

Répondre

1

atom: est juste l'espace de noms, et peut-être vous pourriez simplement l'ignorer. Si ce ne sont toujours pas des œuvres, vous pouvez avoir à utiliser:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("atom", "http://www.w3.org/2005/Atom"); 

selectsinglenode("atom:content/somefield1/subfield", nsmgr); 

Ce qui est documenté here

+0

doh! Je n'ai pas réalisé que c'était un espace de nom standard! Merci beaucoup! –