c# - 使用C#在XDocument中获取同一级别上的所有XML属性值

标签 c# xml xpath

我有以下XML

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/

相关文章:

c# - Unity)如何保持 Sprite 纵横比?

c# - Distinct() 是否保留始终取列表中的第一个元素

java - 在java中的XML中设置属性/节点

xpath - XPATH-如何使用OR语句/以先到者为准搜索两个不同的类

html - Selenium:嵌入到 Object 标签中的 SVG 元素未被 Selenium IDE 或 xPath 识别?

c# - 解释峰值和标志算法

c# - 在代码中放置密码的方法

php - PHP 的最佳 XML 解析器

java - 表格不显示

javascript - 如何使用 xpath 计算子元素距父元素的深度?