在 C# 中获取特定 XML 数据

Get Specific XML Data In C#

我有以下 xml(在 1 个文件中)

<ROW QUALIFYPREFIX="PayerAddressChildItem_R1_" PKEY="2128465">
<COL NAME="IsDefault" TYPE="FieldTypeBoolean" HIDDEN="1" OVALUE="0" VALUE="0" DVALUE="No" />
<COL NAME="AddressType" TYPE="FieldTypeValidValues" OVALUE="Billing" VALUE="Billing" DVALUE="Billing" />
<COL NAME="AddressLine1" TYPE="FieldTypeVarchar" OVALUE="111 sts" VALUE="111 sts" DVALUE="111 sts" />
<COL NAME="AddressLine2" TYPE="FieldTypeVarchar" OVALUE="" VALUE="" DVALUE="" />
<COL NAME="City" TYPE="FieldTypeVarchar" OVALUE="new york" VALUE="new york" DVALUE="new york" />
<COL NAME="State" TYPE="FieldTypeState" OVALUE="NC" VALUE="NC" DVALUE="NC" />
<COL NAME="Zip" TYPE="FieldTypeZipCode" OVALUE="10010" VALUE="10010" DVALUE="10010" />
<COL NAME="BasedOn" TYPE="FieldTypeValidValues" OVALUE="Billed Date" VALUE="Billed Date" DVALUE="Billed Date" />
<COL NAME="EffectiveDate" TYPE="FieldTypeDate" OVALUE="4/22/2016 12:00:00 AM" VALUE="4/22/2016" DVALUE="4/22/2016" />
<COL NAME="ExpirationDate" TYPE="FieldTypeDate" OVALUE="" VALUE="" DVALUE="" />
</ROW>

<ROW QUALIFYPREFIX="PayerAddressChildItem_R2_" REQUEST="WRITE">
<COL NAME="IsDefault" TYPE="FieldTypeBoolean" HIDDEN="1" OVALUE="" VALUE="" DVALUE="Unknown" />
<COL NAME="AddressType" TYPE="FieldTypeValidValues" OVALUE="" VALUE="Billing" DVALUE="Billing" />
<COL NAME="AddressLine1" TYPE="FieldTypeVarchar" OVALUE="" VALUE="111 sts" DVALUE="111 sts" />
<COL NAME="AddressLine2" TYPE="FieldTypeVarchar" OVALUE="" VALUE="" DVALUE="" />
<COL NAME="City" TYPE="FieldTypeVarchar" OVALUE="" VALUE="new york" DVALUE="new york" />
<COL NAME="State" TYPE="FieldTypeState" OVALUE="" VALUE="AE" DVALUE="AE" />
<COL NAME="Zip" TYPE="FieldTypeZipCode" OVALUE="" VALUE="10010" DVALUE="10010" />
<COL NAME="BasedOn" TYPE="FieldTypeValidValues" OVALUE="" VALUE="Billed Date" DVALUE="Billed Date" />
<COL NAME="EffectiveDate" TYPE="FieldTypeDate" OVALUE="" VALUE="4/23/2016" DVALUE="4/23/2016" />
<COL NAME="ExpirationDate" TYPE="FieldTypeDate" OVALUE="" VALUE="" DVALUE="" />
</ROW>

我只想在列表中存储 COL NAME="EffectiveDate" 的值。在这种情况下,有 2 个。第一个 EffectiveDate 的值 = 4/22/2016,第二个 EffectiveDate = 4/23/2016.

知道如何实现吗?

嗯,您的数据 不是 有效的 XML 文件。您可以通过添加虚拟根元素使其成为有效文档。

一旦你Xml有效,你可以简单地做LinqXml

XDocument root = XDocument.Load(filepath);

var results = root
    .Descendants("COL")
    .Where(x=>x.Attribute("NAME").Value == "EffectiveDate")
    .Select(x=>x.Attribute("VALUE").Value);

输出

4/22/2016
4/23/2016

看看这个demo