2013-04-05 72 views
0

作爲我正在開發的項目的一部分,我需要查詢XML文件並根據搜索條件查找數據。我嘗試了一些使用XDocument的例子,但我的問題是需要解析的XML文件大約有7個變體。所以我不知道元素名稱,只是文件可能包含的屬性。對於每個變體,我將這些文件連接成一個文件,這是我的理論,它會使搜索更容易。迄今爲止這個理論已被證明是錯誤的。使用帶有未知元素的LINQ to XML獲取屬性值

所有將具有一些或全部的屬性列表。例如

<root> 
    <T1> 
     <T11 name="123"/> 
     <H05 FileType="T52" ClientID="POB" /> 
    </T1> 
    <T1> 
     <T11 name="1234"/> 
     <H05 FileType="T2" ClientID="POB" /> 
     <E1 ErrorCode="AA00" ErrorText="There was an Error" /> 
     <E1 ErrorCode="BB00" ErrorText="There was another Error" /> 
    </T1> 
</root> 

如果我想要搜索名稱的錯誤集合,是否可以使用僅在文件中找到的屬性名稱來搜索LINQ?

+0

我真的不知道你在問什麼...你可以更新你的問題,例如顯示該樣品XLM的所需輸出? – MarcinJuraszek 2013-04-05 15:16:03

回答

1

假設你要查找的文件,其中包含一個ErrorCode屬性的所有節點:

XDocument document = LoadXml(); 
IEnumerable<XElement> errorNodes = document 
    // Find all descendant nodes: 
    .Descendants() 
    // With an "ErrorCode" attribute: 
    .Where(el => el.Attribute("ErrorCode") != null); 
+0

這看起來很像我以後的樣子。能夠搜索整個XML文檔的已知屬性。非常感謝,如果我的原始解釋不清楚,請致歉 – James 2013-04-06 10:30:50

0

你應該能夠做這樣的事。

 var xmlString = @"<root> 
     <T1> 
     <T11 name=""123\""/> 
     <H05 FileType=""T52"" ClientID=""POB"" /> 
     </T1> 
     <T1> 
     <T11 name=""1234""/> 
     <H05 FileType=""T2"" ClientID=""POB"" /> 
     <E1 ErrorCode=""AA00"" ErrorText=""There was an Error"" /> 
     <E1 ErrorCode=""BB00"" ErrorText=""There was another Error"" /> 
     </T1> 
     </root>"; 

     var xml = XDocument.Parse(xmlString); 

     var names = from x in xml.Descendants().Attributes("name") select x.Parent; 
相關問題