Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按属性值选择节点_C#_Linq To Xml - Fatal编程技术网

C# 按属性值选择节点

C# 按属性值选择节点,c#,linq-to-xml,C#,Linq To Xml,我有一个如下所示的XML: <TRANSFORMATION DESCRIPTION ="" NAME ="RTR_LRC_RF_REFL_Unproc" OBJECTVERSION ="1" REUSABLE ="NO" TYPE ="Router" VERSIONNUMBER ="1"> <GROUP DESCRIPTION ="" NAME ="INPUT" ORDER ="1" TYPE ="INPUT"/>

我有一个如下所示的XML:

    <TRANSFORMATION DESCRIPTION ="" NAME ="RTR_LRC_RF_REFL_Unproc" OBJECTVERSION ="1" REUSABLE ="NO" TYPE ="Router" VERSIONNUMBER ="1">
              <GROUP DESCRIPTION ="" NAME ="INPUT" ORDER ="1" TYPE ="INPUT"/>
              <GROUP DESCRIPTION ="" EXPRESSION ="EXP 1" NAME ="Good" ORDER ="2" TYPE ="OUTPUT"/>
              <GROUP DESCRIPTION ="Path for the data when none of the group conditions are satisfied." NAME ="DEFAULT1" ORDER ="3" TYPE ="OUTPUT/DEFAULT"/>
              <TRANSFORMFIELD DATATYPE ="integer" DEFAULTVALUE ="" DESCRIPTION ="" GROUP ="INPUT" NAME ="OWNER_HEORG_REFNO" PICTURETEXT ="" PORTTYPE ="INPUT" PRECISION ="10" SCALE ="0"/>
              <TRANSFORMFIELD DATATYPE ="integer" DEFAULTVALUE ="" DESCRIPTION ="" GROUP ="INPUT" NAME ="PATNT_REFNO" PICTURETEXT ="" PORTTYPE ="INPUT" PRECISION ="10" SCALE ="0"/>
              <TRANSFORMFIELD DATATYPE ="integer" DEFAULTVALUE ="" DESCRIPTION ="" GROUP ="INPUT" NAME ="REFRL_REFNO" PICTURETEXT ="" PORTTYPE ="INPUT" PRECISION ="10" SCALE ="0"/>
==============================================================================================
<GROUP DESCRIPTION ="" EXPRESSION ="(Valid_Record_Flag = &apos;Y&apos; 
<GROUP DESCRIPTION ="Path for the data when none of the group condition
<GROUP DESCRIPTION ="" EXPRESSION ="EXP2" .../> 
<GROUP DESCRIPTION ="" EXPRESSION ="EXP3" .../> 
<GROUP DESCRIPTION ="" EXPRESSION ="EXP4" .../> 
但这会使所有TRANSFORMFIELD节点(包括组节点)的表达式属性只出现一次

如果组节点的EXPRESSION属性多次出现,如何获取TRANSFORMFIELD节点


非常感谢

我不能百分之百确定我是否理解您的要求,但我认为您只想获得
转换
的所有
转换字段
,其中包含多个定义了
表达式的
元素。您可以这样做:

var query =
    from transform in doc.Descendants("TRANSFORMATION")
    where String.Equals((string)transform.Attribute("TYPE"), "router",
                        StringComparison.OrdinalIgnoreCase)
    // GROUP elements that have more than one EXPRESSIONs defined
    where transform.Elements("GROUP")
                   .Where(e => e.Attribute("EXPRESSION") != null)
                   .Skip(1).Any() // more than one
    select transform.Elements("TRANSFORMFIELD");
var query =
    from transform in doc.Descendants("TRANSFORMATION")
    where String.Equals((string)transform.Attribute("TYPE"), "router",
                        StringComparison.OrdinalIgnoreCase)
    // GROUP elements that have more than one EXPRESSIONs defined
    where transform.Elements("GROUP")
                   .Where(e => e.Attribute("EXPRESSION") != null)
                   .Skip(1).Any() // more than one
    select transform.Elements("TRANSFORMFIELD");