2013-11-04 161 views
0

使用c#反序列化以下XML中的特定条目的最佳方式是什么?即我想返回所有值,等于“0001”基于属性值反序列化XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Record ID="0001"> 
     <Random1>string1</Random1> 
     <Random2>string1</Random2> 
     <Random3>string1</Random3> 
     <Random4>string1</Random4> 
    </Record> 
    <Record ID="0002"> 
     <Random1>string1</Random1> 
     <Random2>string1</Random2> 
     <Random3>string1</Random3> 
     <Random4>string1</Random4> 
    </Record> 
</Data> 

希望是有道理的元素属性“ID”,道歉是我用过的术语是不正确还是对于新手。

+0

也是 “Random1”,等等。从客户端属性客户 – user1641194

+0

名称几经变更Random1不一个'属性'它的一个孩子节点 – naveen

+0

如果你包含你尝试过的C#代码并且解释它不是mee满足你的期望。提供您的输入XML是不够的。 – kjhughes

回答

0

试试这个

private List<string> GetRecordChildrenList(string xmlPath, string recordID) 
{ 
    var childNodes = new List<string>(); 
    var doc = XDocument.Load(xmlPath); 
    var record = doc.Descendants("Record").FirstOrDefault(r => r.Attribute("ID").Value == recordID); 
    if(record != null) 
     childNodes = record.Descendants().Select(elm => elm.Value).ToList(); 
    return childNodes; 
} 

这样称呼它

var path = "~/App_Data/TestXML.xml"; 
var values = GetRecordChildrenList(path, "0001"); 

回报string1, string2, string3, string4

+0

非常感谢纳文 – user1641194