开发者

Reading different XML with C#/DOM

I am currently using DOM to navigate xml in my C# project. However, some XML that i've come across lately is a bit different.

whereas usually I have:

<?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>
      </s开发者_运维问答omefield>
    </content>
  </entry>
</feed>

and can navigate using foreach entry as entry, selectsinglenode(/content/somefield1/subfield), innertext to get the data from the subfield for each entry, the new XML looks like this:

<?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/subfield) is definitely not going to work...any suggestions?


atom: is just the namespace, and possibly you might just ignore it. If it still not works, you may have to use:

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

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

Which is documented here

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜