Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c获取XDocument中同一级别的所有XML属性值#_C#_Xml_Xpath - Fatal编程技术网

C# 使用c获取XDocument中同一级别的所有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)的所有值,要么只是第一个。我需要的是同一级别上第一个元素的值

我有以下XML

我需要的是从XDocumentXML获取XML中同一级别的每个“cascadingentity”部分的“condition”属性的所有值

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

clm_bankingrelationship.clm_agreementid clm_bankingrelationship.clm_bankingrelationshipid

我已经尝试了各种方法,但要么我得到了所有现有decentant(levels)的所有值,要么只是第一个。我需要的是同一级别上第一个元素的值

任何暗示我都很感激

Thx

编辑:

这里是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('{', '}'));
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的更新添加,您是我的英雄;)作品很有魅力,非常感谢:)