繁体   English   中英

C#Linq XML,检查特定值并解析为数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM