我有以下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
}
答案 0 :(得分:0)
你想要这样的东西:
var ids = f.Root.Descendants("ElementDefinition")
.Where(x => x.Element("QUANTITY").Value != "0")
.Select(x => x.Element("ID").Value);
如果您想要ID,选择所有QUANTITY节点并不是很有帮助。相反,请准确选择您在问题中指定的内容:
所有ElementDefinitions(Descendants("ElementDefinition")
),其QUANTITY的值不是0(Where(x => x.Element("QUANTITY").Value != "0"
)。从结果节点中,选择ID(Select(x => x.Element("ID").Value)
)。
答案 1 :(得分:0)
哟可以替换为
var xe = f.Root.Elements("Data/ElementDefinition/QUANTITY").Where(x => x.Value != "0").ToArray();