【问题标题】:Get all XML attribute values on same level in XDocument with c#使用c#获取XDocument中同一级别的所有XML属性值
【发布时间】:2018-02-05 12:22:11
【问题描述】:

我有以下 XML

我需要的是从 XDocument XML 获取同一级别的 XML 中每个“级联实体”部分的“条件”属性的所有值

在这种情况下,结果应该是

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>

【问题讨论】:

  • 您能否将 XML 发布为文本,以便我们尝试解决方案?
  • shure 抱歉,作为帖子更新添加

标签: c# xml xpath


【解决方案1】:

您可以使用 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

【讨论】:

  • 太棒了,你是我的英雄 ;) 很有魅力,非常感谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2022-07-02
  • 1970-01-01
相关资源
最近更新 更多