我提供了一个xml流,它是一个记录表,其中的一个字段表示记录的生效日期。我需要记录最近的生效日期。
<?xml version=1.0?>
<table>
<row id=12 employeeId=151>
<field id=divisionCode>COA1</field>
<field id=glCode>4330</field>
<field id=payType>FTHR</field>
<field id=schedule>9a -7:30p M - F</field>
<field id=effectiveDate>2016-10-12</field>
</row>
<row id=26 employeeId=151>
<field id=divisionCode>COA1</field>
<field id=glCode>4330</field>
<field id=payType>FTHR</field>
<field id=schedule>7a -3:30p M - F</field>
<field id=effectiveDate>2019-01-10</field>
</row>
</table>
我想检索有效日期= 2019-01-1的记录的所有字段。
谢谢!
语言并不重要,因为我只需要C#/ VB.NET中同样精通的概念。
我尝试了几件事,包括:
Dim dt As DataTable = New DataTable()
Dim sr As StringReader = New StringReader(xmlStr)
Dim ds As DataSet = New DataSet()
ds.ReadXml(sr)
dt = ds.Tables(0)
谢谢。
答案 0 :(得分:0)
请勿使用DataSet
/ DataTable
来解析xml。既困难又不便。
我建议使用Linq到Xml。
XElement xml = XElement.Parse(xmlStr);
var maxEffectiveDate = xml.Elements("row")
.Elements("field")
.Where(field => field.Attribute("id").Value == "effectiveDate")
.Max(field => field.Value);
var rows = xml.Elements("row")
.Where(row => row.Elements("field")
.Any(field => field.Attribute("id").Value == "effectiveDate"
&& field.Value == maxEffectiveDate));