C# 使用c获取XDocument中同一级别的所有XML属性值#
我有以下XML 我需要的是从XDocumentXML获取XML中同一级别的每个“cascadingentity”部分的“condition”属性的所有值 在这种情况下,结果应该是 clm_bankingrelationship.clm_agreementid clm_bankingrelationship.clm_bankingrelationshipid 我已经尝试了各种方法,但要么我得到了所有现有decentant(levels)的所有值,要么只是第一个。我需要的是同一级别上第一个元素的值 任何暗示我都很感激 Thx 编辑: 这里是XML:C# 使用c获取XDocument中同一级别的所有XML属性值#,c#,xml,xpath,C#,Xml,Xpath,我有以下XML 我需要的是从XDocumentXML获取XML中同一级别的每个“cascadingentity”部分的“condition”属性的所有值 在这种情况下,结果应该是 clm_bankingrelationship.clm_agreementid clm_bankingrelationship.clm_bankingrelationshipid 我已经尝试了各种方法,但要么我得到了所有现有decentant(levels)的所有值,要么只是第一个。我需要的是同一级别上第一个元素的值
<rootentity name='clm_bankingrelationship'>
<cascadingentities>
<cascadingentity name='clm_agreement'>
<fetchXML>
<fetch distinct='true'>
<entity name='clm_agreement' >
<attribute name='clm_agreementid' />
<filter type='and'>
<condition attribute='clm_agreementid' operator='eq' value='{clm_bankingrelationship.clm_agreementid}' />
</filter>
</entity>
</fetch>
</fetchXML>
<cascadingentities>
<cascadingentity name='clm_partneragreementbanking'>
<fetchXML>
<fetch distinct='true'>
<entity name='clm_partneragreementbanking' >
<attribute name='clm_partneragreementbankingid' />
<link-entity name="clm_role" from="clm_roleid" to="clm_roleid" link-type="inner" />
<filter type='and' >
<condition attribute='clm_agreementid' operator='eq' value='{clm_agreement.clm_agreementid}' />
</filter>
</entity>
</fetch>
</fetchXML>
</cascadingentity>
<cascadingentity name='account'>
<fetchXML>
<fetch distinct="true" >
<entity name="account" >
<attribute name="accountid" />
<link-entity name="clm_partneragreementbanking" from="clm_partnerid" to="accountid" link-type="inner" />
<filter type='and' >
<condition entityname="clm_partneragreementbanking" attribute="clm_agreementid" operator="eq" value='{clm_agreement.clm_agreementid}' />
<condition attribute='clm_mainpartnertypecd' operator='neq' value='858000005' />
</filter>
</entity>
</fetch>
</fetchXML>
</cascadingentity>
</cascadingentities>
</cascadingentity>
<cascadingentity name='clm_waiver'>
<fetchXML>
<fetch distinct='true'>
<entity name='clm_waiver' >
<attribute name='clm_waiverid' />
<filter type='and' >
<condition attribute='clm_bankingrelationshipid' operator='eq' value='{clm_bankingrelationship.clm_bankingrelationshipid}' />
</filter>
</entity>
</fetch>
</fetchXML>
</cascadingentity>
</cascadingentities>
</rootentity>
您可以使用XPath获取这些值:
var xml = XDocument.Load(PATH_TO_XML);
var conditions = xml.XPathEvaluate("rootentity/cascadingentities/cascadingentity/"
+ "fetchXML/fetch/entity/filter/condition");
var values = ((IEnumerable<object>)conditions).OfType<XElement>()
.Select(e => e.Attribute("value").Value.Trim('{', '}'));
var xml=XDocument.Load(路径\u到\u xml);
var conditions=xml.xpatheevalue(“rootentity/cascadingentities/cascadingentity/”
+“fetchXML/fetch/entity/filter/condition”);
变量值=((IEnumerable)条件)
.Select(e=>e.Attribute(“value”).value.Trim('{','}');
看看它的实际效果。您能将XML作为文本发布,以便我们尝试解决方案吗?舒尔抱歉,作为postAwesome的更新添加,您是我的英雄;)作品很有魅力,非常感谢:)