0

在我的应用程序中,我读取存储在独立存储中的XML。 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> 

我希望在第一<Fact>读取第一个<imageName>。这是我的代码

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

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

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

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

回答

0

Element只会搜索直接的孩子。所以,如果你想用这个方法,你必须先检索根目录,然后事实:

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