XMLDocument对象中有一个负载,如下所述。我想通过使用filter选项或使用where子句来获得ar_invoice_detail_id的特定节点值(我将有一些id要过滤到该节点值(。如果我使用LINQ获得解决方案,而不是使用foreach和访问每一行,那会更好。提前感谢!!
有效载荷:-
<?xml version="1.0" encoding="UTF-8"?>
<response>
<control>
<status>success</status>
<uniqueid>false</uniqueid>
<dtdversion>3.0</dtdversion>
</control>
<operation>
<authentication>
<status>success</status>
<sessiontimestamp>2020-07-23T11:50:35+00:00</sessiontimestamp>
<sessiontimeout>2020-07-23T23:50:35+00:00</sessiontimeout>
</authentication>
<result>
<status>success</status>
<function>readByQuery</function>
<controlid>59eaaa7d-ebc4-407f-9eff-030a45c382bc</controlid>
<data listtype="ar_invoice_detail_commission" count="22" totalcount="22" numremaining="0" resultId="">
<ar_invoice_detail_commission>
<ar_invoice_detail_id>27570</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>27572</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35026</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35072</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35074</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35078</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35080</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35231</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35233</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35235</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35236</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35238</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35264</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35265</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35280</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35281</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35282</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35283</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35313</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35315</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35239</ar_invoice_detail_id>
</ar_invoice_detail_commission>
<ar_invoice_detail_commission>
<ar_invoice_detail_id>35240</ar_invoice_detail_id>
</ar_invoice_detail_commission>
</data>
</result>
</operation>
</response>
使用Xml Ling并创建字典
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication11
{
class Program
{
const string FILENAME = @"c:temptest.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
Dictionary<string, XElement> dict = doc.Descendants("ar_invoice_detail_commission")
.GroupBy(x => (string)x.Element("ar_invoice_detail_id"), y => y)
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
}
}
}