【发布时间】:2013-12-01 05:12:40
【问题描述】:
我有以下 xml,我的目标是对于给定的 ProductName(例如 Spot)和给定的语言(例如“en-gb”)我想要所有翻译。所以在这种情况下(ProductName=Spot and language="en-gb")输出应该是 TRADE STATUS, TRADE ID, VALUE DATE
我尝试了下面的 linq 查询,但它打印了“ProductType=Spot”的所有翻译,而不是 ProductType=Spot 和 language="en-gb" 的所有翻译
var qry = doc.Descendants("Product")
.Where(p => p.Attribute("ProductName").Value == "Spot")
.Where(p =>
p.Element("Fields")
.Element("Field")
.Element("Translations")
.Element("Translation")
.Attribute("language")
.Value == "en-gb")
.Select(p => new { Text = p.Value });
如果有人可以为上述目标建议 linq 查询,那就太好了。
<?xml version="1.0" encoding="utf-8" ?>
<Products>
<Product ProductName="Spot">
<Fields>
<Field FieldName="tradeStatus">
<Translations>
<Translation language="en-gb">TRADE STATUS</Translation>
<Translation language="fr-fr">fr_TRADE STATUS</Translation>
<Translation language="cz-cz">cz_TRADE STATUS</Translation>
</Translations>
</Field>
<Field FieldName="tradeId">
<Translations>
<Translation language="en-gb">TRADE ID</Translation>
<Translation language="fr-fr">fr_TRADEid</Translation>
<Translation language="cz-cz">cz_TRADEid</Translation>
</Translations>
</Field>
<Field FieldName="valueDate">
<Translations>
<Translation language="en-gb">VALUE DATE</Translation>
<Translation language="fr-fr">fr_ValueDate</Translation>
<Translation language="cz-cz">cz_ValueDt</Translation>
</Translations>
</Field>
</Fields>
</Product>
<Product ProductName="Forward">
<Fields>
<Field FieldName="dealtRate">
<Translations>
<Translation language="en-gb">DEALT RATE</Translation>
<Translation language="fr-fr">fr_dealtrt</Translation>
<Translation language="cz-cz">cz_dr</Translation>
</Translations>
</Field>
<Field FieldName="dealtAmount">
<Translations>
<Translation language="en-gb">DEALT AMOUNT</Translation>
<Translation language="fr-fr">fr_dAmtt</Translation>
<Translation language="cz-cz">cz_dealtAmtt</Translation>
</Translations>
</Field>
</Fields>
</Product>
</Products>
【问题讨论】:
标签: nested linq-to-xml