2010-08-13 64 views
0

我是Linq的新手,我想写一个简单的查询来返回我的xml文件中的错误信息。用Linq查询到xml

<?xml version="1.0" encoding="utf-8"?> 
<Error xmlns="urn:xxxxx"> 
      The following errors were detected: 
      <Message>Internal Error</Message></Error> 

以下工作并返回错误信息:

 Dim loaded As XDocument = XDocument.Parse(strReturn) 
    Dim ns As XNamespace = "urn:xxxxx" 
    Dim errors = From err In loaded.Descendants(ns + "Error") _ 
            Select err.Elements(ns + "Message").Value 

但下面不返回任何结果:

Imports <xmlns="urn:xxxxx"> 
Dim loaded As XDocument = XDocument.Parse(strReturn) 
Dim errors = From err In loaded.Descendants.<Error> _ 
           Select err.Elements.<Message>.Value 

我只是想获得一个更好地了解Linq,但有人可以告诉我为什么后来不工作,因为他们都不应该返回相同的结果?

在此先感谢

回答

1

.<Error>,使该元素方法的调用,所以当你打电话err.Elements.<Message>你正在做err.Elements.Elements("Message")并获得犯错,而不只是它的孩子的孩子的孩子。只需删除对后代和元素的额外呼叫。如果您希望加载后代而不是仅儿童,则需要使用...而不是.

Dim errors = From err In loaded...<Error> _ 
      Select err.<Message>.Value 
+0

Thanks Quartermeister perfect – fedor333 2010-08-13 13:33:55