![](/img/trans.png)
[英]How to parse a xml-file using C# and Linq by finding a specific attributes value
[英]C# Linq XML, check for specific value and parse to array
我有以下XML:
<?xml version="1.0" ?>
<NewDataSet>
<Data>
<ElementDefinition>
<ID>1</ID>
<QUANTITY>0</QUANTITY>
</ElementDefinition>
<ElementDefinition>
<ID>2</ID>
<QUANTITY>1</QUANTITY>
</ElementDefinition>
</Data>
</NewDataSet>
我需要创建一个包含所有ElementDefinitions的数组,其中包含的QUANTITY元素的值不为0。
我试过了:
var f = XDocument.Load(path);
var xe = f.Root.Elements("QUANTITY").Where(x => x.Value != "0").ToArray();
但这似乎不起作用。 使用上述XML,数组应包含1个项目,但保持为0。
之后,我需要为数组中的每个ElementDefinition创建一个字符串,该字符串必须包含相应ID元素的值。
为此,我尝试:
foreach (string x in xe)
{
string ID = //not sure what to do here
}
您想要这样的东西:
var ids = f.Root.Descendants("ElementDefinition")
.Where(x => x.Element("QUANTITY").Value != "0")
.Select(x => x.Element("ID").Value);
根据需要的ID,选择所有QUANTITY节点不是很有帮助。 相反,请完全选择您在问题中指定的内容:
所有ElementDefinitions( Descendants("ElementDefinition")
具有数量比0(以外的值Where(x => x.Element("QUANTITY").Value != "0"
从得到的节点,选择ID( Select(x => x.Element("ID").Value)
)。
可以替换为
var xe = f.Root.Elements("Data/ElementDefinition/QUANTITY").Where(x => x.Value != "0").ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.