我有以下XML
我需要的是从XDocument XML获得同一级别的XML中每个“级联”部分的“ condition”属性的所有值。
在这种情况下,结果应该是
clm_bankingrelationship.clm_agreementid
clm_bankingrelationship.clm_bankingrelationshipid
我已经尝试了各种方法,但是要么获得所有现有后代(级别)的所有值,要么仅获得第一个。我需要的是同一级别上的第一个元素的值。
任何提示,我们将不胜感激。
谢谢
编辑:
这里的XML:
<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('{', '}'));
在操作HERE中查看它。
关于c# - 使用C#在XDocument中获取同一级别上的所有XML属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48622492/