我有一个如下的 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 = 'Y'
<GROUP DESCRIPTION ="Path for the data when none of the group condition
<GROUP DESCRIPTION ="" EXPRESSION ="EXP2" .../>
<GROUP DESCRIPTION ="" EXPRESSION ="EXP3" .../>
<GROUP DESCRIPTION ="" EXPRESSION ="EXP4" .../>
我使用 C# (LINQ to XML) 从上面的 XML 中获取一些信息。
在上面的 XML 中,您可以看到 . 您还可以看到 GROUP 节点的 EXPRESSION 属性只出现一次。我还有其他节点集,它们也包含节点,但它们具有多个 EXPRESSION 属性(===== 分隔符下方的节点)。
我的要求是,我想从 EXPRESSION 属性只出现一次的 GROUP 节点中提取一些信息。
我目前使用以下 C# 代码来提取信息:
var q = from c in xmlDoc.Descendants("TRANSFORMATION")
where c.HasAttributes &&
c.Attribute("TYPE") != null && !String.IsNullOrEmpty(c.Attribute("TYPE").Value) &&
c.Attribute("TYPE").Value.ToUpper().Equals("ROUTER")
select c.Descendants("TRANSFORMFIELD");
但这使得所有 TRANSFORMFIELD 节点,包括具有 EXPRESSION 属性的 GROUP 节点仅出现一次。
如何获得具有 EXPRESSION 属性的 GROUP 节点多次出现的 TRANSFORMFIELD 节点?
非常感谢!