从孤立存储中读取xml时的奇怪行为

时间:2013-07-02 13:31:49

标签: xml silverlight windows-phone-7 xml-parsing isolatedstorage

在我的应用程序中,我正在读取存储在独立存储中的XML。 XML如下

  <?xml version="1.0" encoding="utf-8"?>
    <Root>
      <Fact>
        <imageName>tumblr_inline_mp8rloanHl1qz4rgp.jpg</imageName>
        <ImageURL>http://mline_mp8rloanHl1qz4rgp.jpg</ImageURL>
        <imageTime>Mon, 01 Jul 2013 10:42:59 +0530</imageTime>

        <imageRef>http://media.tumblr/5bae62d98c52c367/tumblrgp.jpg</imageRef>
        <imageCopied>No</imageCopied>
      </Fact>
  <Fact>
    <imageName>tumblr_mp8dtoGGFs1qkvbwso1_500.png</imageName>
    <ImageURL>http://25.media./tumblr_mp8dtoGGFs1qkvbwso1_500.png</ImageURL>
    <imageTime>Mon, 01 Jul 2013 08:28:00 +0530</imageTime>

    <imageRef>http://simple.wikipedia.org/wiki/Moondyne_Joe</imageRef>
    <imageCopied>No</imageCopied>
  </Fact>
    </Root>

我想先阅读<imageName>中的第一个<Fact>。这是我的代码

XDocument readedDoc = XDocument.Load(isoStream);
                var root = readedDoc.Element("Fact");

但root始终为null。但是,如果我用“Root”替换“Fact”,则var root包含xml中的第一个节点。

XDocument readedDoc = XDocument.Load(isoStream);
                var root = readedDoc.Element("Root");

请告诉我有关错误的信息,如果可能,请提供代码以阅读特定的“imageName”标记。

1 个答案:

答案 0 :(得分:0)

Element只会搜索直接的孩子。因此,如果您想使用此方法,您首先要检索root,然后事实:

XDocument readedDoc = XDocument.Load(isoStream);
var root = readedDoc.Element("Root");
var fact = root.Element("Fact");

或者您可以使用Descendants来浏览整个树:

XDocument readedDoc = XDocument.Load(isoStream);
var fact = readedDoc.Descendants("Fact").First();