代码之家  ›  专栏  ›  技术社区  ›  contactmatt

Windows 7 Mobile Silverlight:Linq to XML问题

  •  1
  • contactmatt  · 技术社区  · 15 年前

    我有一个XML文档:

    <?xml version="1.0" encoding="utf-8"?>
    <feed xmlns="http://www.w3.org/2005/Atom">
    
      <title>blahblah</title>
      <subtitle>blahblah.</subtitle>
      <link href="blahblah"/>
      <link href="blahblah"/>
      <updated>blahblah</updated>
      <author>
        <name>blahblah</name>
      </author>
      <id>blahblah</id>
    
      <entry>
        <title>blahblah</title>
        <content type="html"><![CDATA[&ldquo;some text.&rdquo;]]></content>
      </entry>
    </feed>
    

    我想得到入口节点的内容信息,这是我的代码:

    var xmlTreeVal = XDocument.Load("myxml.xml");
    
            var returnVal = from item in xmlTreeVerse.Descendants("feed").Elements("entry")
                              select new VerseModel
                               {
                                   Verse = item.Element("content").Value
                               };
    

    xml文档加载正常(我可以通过调试得知),但它一直抛出“找不到顺序项”错误。如何找到“内容”节点信息?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Ahmad Mageed    15 年前

    每当您的XML有一个名称空间(由 xmlns 属性)还必须通过引用元素的命名空间来引用这些元素。这是通过将命名空间连接到元素名来完成的。

    而且,你用 xmlTreeVal 但随后引用 xmlTreeVerse -可能不是 这个 问题是,你所提供的代码不一致。

    试试这个:

    var ns = xmlTreeVerse.Root.GetDefaultNamespace();
    var returnVal = from item in xmlTreeVerse.Descendants(ns + "feed").Elements(ns + "entry")
                    select new 
                    {
                        Verse = item.Element(ns + "content").Value
                    };
    
    推荐文章