2010-11-17 74 views
2

文本我有一个这样的XML文件:以XML(的XDocument)使用LINQ to XML来读取XML文件

<Root> 
    This is beginning of list of children. 
    <Children> 
     <Child Name="a">A</Child> 
     <Child Name="b">B</Child> 
     <Child Name="c">C</Child> 
    </Children> 
    This is end of list of children. 
</Root> 

我使用LINQ阅读该文件。我需要的是根元素中的“文本”,“这是儿童列表的开始”。但是当我检查XElement的Value属性时,我得到以下内容:

这是开始的children.ABCThis是儿童列表的结尾。

我在做什么错?

回答

2

如果你只是想第一个文本节点(忽略“这是孩子的列表的末尾”,这仍然是在根元素文本),你可以使用:

var text = (string) doc.Root.Nodes() 
          .OfType<XText>() 
          .First() 
          .Value; 

注意,这将包含空格,所以你可能想修剪它。它还假设有至少有一个文本节点。

+0

真棒,这工作就像一个魅力! – SoftwareRockstar 2010-11-17 18:08:21

2
var doc = XDocument.Parse(xml); 
var ele = doc.Element("Root"); 
string whatUWant = ele.FirstNode.ToString(); 

这可能会满足您的要求。

BTW,Root.Value表示节点“Root”的整个值,所以你得到了这样的结果。我猜。

+0

是的,你是对的,我没有意识到Root.Value意味着Root的全部价值。 – SoftwareRockstar 2010-11-17 18:09:11