使用 linq 读取 xml 属性
Read xml attribute with linq
<ARTICLE_PRICE_DETAILS>
<DATETIME type="valid_start_date">
<DATE>2015-07-01</DATE>
</DATETIME>
<DATETIME type="valid_end_date">
<DATE></DATE>
</DATETIME>
</ARTICLE_PRICE_DETAILS>
如何获取元素中的值?
我试过这个
var productQuery = (from p in xmlDocument.Descendants("ARTICLE_PRICE_DETAILS")
select new
{
articleDatetime = p.Element("DATETIME")
.Attribute("valid_start_date")
.Value
});
当我尝试使用 articleDatetime 时,出现异常。
需要帮助
嗯,看起来您正在尝试获取 DATETIME
下具有属性 type="valid_start_date"
.
的 DATE
元素的值
可以通过多种方式完成,这里是其中之一:
var dates = xmlDocument
.XPathSelectElements("ARTICLE_PRICE_DETAILS/DATETIME[@type='valid_start_date']/DATE")
.Select(e => e.Value)
.ToList();
注意这里的大部分工作是使用 XPathSelectElements
方法和适当的 xpath 表达式完成的。
同样的结果也可以在不使用 xpath 选择的情况下实现,只需通过几个 linq 调用,如:
var xmlDocument = doc.Descendants("ARTICLE_PRICE_DETAILS")
.Descendants("DATETIME")
.Where(e => e.Attribute("type")?.Value == "valid_start_date")
.Descendants("DATE")
.Select(e => e.Value)
.ToList();
但它看起来不太可读(至少从我的角度来看)。
<ARTICLE_PRICE_DETAILS>
<DATETIME type="valid_start_date">
<DATE>2015-07-01</DATE>
</DATETIME>
<DATETIME type="valid_end_date">
<DATE></DATE>
</DATETIME>
</ARTICLE_PRICE_DETAILS>
如何获取元素中的值?
我试过这个
var productQuery = (from p in xmlDocument.Descendants("ARTICLE_PRICE_DETAILS")
select new
{
articleDatetime = p.Element("DATETIME")
.Attribute("valid_start_date")
.Value
});
当我尝试使用 articleDatetime 时,出现异常。 需要帮助
嗯,看起来您正在尝试获取 DATETIME
下具有属性 type="valid_start_date"
.
DATE
元素的值
可以通过多种方式完成,这里是其中之一:
var dates = xmlDocument
.XPathSelectElements("ARTICLE_PRICE_DETAILS/DATETIME[@type='valid_start_date']/DATE")
.Select(e => e.Value)
.ToList();
注意这里的大部分工作是使用 XPathSelectElements
方法和适当的 xpath 表达式完成的。
同样的结果也可以在不使用 xpath 选择的情况下实现,只需通过几个 linq 调用,如:
var xmlDocument = doc.Descendants("ARTICLE_PRICE_DETAILS")
.Descendants("DATETIME")
.Where(e => e.Attribute("type")?.Value == "valid_start_date")
.Descendants("DATE")
.Select(e => e.Value)
.ToList();
但它看起来不太可读(至少从我的角度来看)。