我有一个这样的示例XML:
<doc>
<customer id="1">
<first>
<fullname>John Doe 1</fullname>
<contact>011-1111111</contact>
<title>Lorem</title>
</first>
<second>
<fullname>John Doe 2</fullname>
<contact>012-2222222</contact>
<title>Lorem</title>
</second>
</customer>
</doc>
我的问题是如何根据客户ID将所有子节点放在第一个和第二个内部。到目前为止,这是我尝试过但我不知道如何继续它。
XDocument doc = XDocument.Load("sampleXML.xml");
var controls = from str in doc.Elements("customer")
where str.Attribute("id").Value == 1
select str;
如果我能够获取数据,我该如何显示结果?通过使用foreach循环?对不起,如果这是一个愚蠢的问题,但我对c#和linq很新。
答案 0 :(得分:2)
您可以使用XElement.Load("xmlPath")
加载xml,并根据属性获取筛选出的所有客户元素。循环遍历每个节点并打印。
XElement xelement = XElement.Load("sampleXml.xml");
var customers = xelement.Elements("customer").FirstOrDefault(x => x.Attribute("id").Value == "1");
foreach (XElement customer in customers.Nodes())
{
var fullName = customer.Element("fullname").Value;
var contact = customer.Element("contact").Value;
var title = customer.Element("title").Value;
}
答案 1 :(得分:1)
您可以使用以下代码获取first
代码中的信息。
var first = doc.Root.Elements("customer").Elements("first").Elements();
答案 2 :(得分:0)
您可以使用xpath查找具有属性值的元素。
这是一个例子
string xml= "your xml string";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
var nodes = doc.SelectSingleNode("/doc/customer[@id='1']").ChildNodes;