如何通过名称获取元素的值

时间:2019-05-13 13:59:40

标签: tsql xpath

我正在使用T-SQl和xPath查询xml文档。我需要按名称提取元素的值

这是我最初实现代码“使用元素索引访问元素”的方式,但是由于element可以具有的倍数元素,因此无法正常工作。  n.value(''./ ROLES [1] / ROLE [1] / BORROWER [1] / GOVERNMENT_MONITORING [1] / HMDA_RACES [1] [./ HMDA_RACE / EXTENSION / ULDD:OTHER / ULDD:HMDA_RACE_EXTENSION / ULDD:HMDA_RACE_DETAIL / ULDD:HMDARaceType] [1]'',''VARCHAR(100)'')

这是我要查询的xml

<HMDA_RACES>
                                                <HMDA_RACE>
                                                    <EXTENSION>
                                                        <ULDD:OTHER xmlns:ULDD="http://www.datamodelextension.org/Schema/ULDD">
                                                            <ULDD:HMDA_RACE_EXTENSION>
                                                                <ULDD:HMDA_RACE_DESIGNATIONS>
                                                                    <ULDD:HMDA_RACE_DESIGNATION>
                                                                        <ULDD:HMDARaceDesignationType>Samoan</ULDD:HMDARaceDesignationType>
                                                                    </ULDD:HMDA_RACE_DESIGNATION>
                                                                </ULDD:HMDA_RACE_DESIGNATIONS>
                                                                <ULDD:HMDA_RACE_DETAIL>
                                                                    <ULDD:HMDARaceType>NativeHawaiianOrOtherPacificIslander</ULDD:HMDARaceType>
                                                                </ULDD:HMDA_RACE_DETAIL>
                                                            </ULDD:HMDA_RACE_EXTENSION>
                                                        </ULDD:OTHER>
                                                    </EXTENSION>
                                                </HMDA_RACE>
                                                <HMDA_RACE>
                                                    <EXTENSION>
                                                        <ULDD:OTHER xmlns:ULDD="http://www.datamodelextension.org/Schema/ULDD">
                                                            <ULDD:HMDA_RACE_EXTENSION>
                                                                <ULDD:HMDA_RACE_DETAIL>
                                                                    <ULDD:HMDARaceType>White</ULDD:HMDARaceType>
                                                                </ULDD:HMDA_RACE_DETAIL>
                                                            </ULDD:HMDA_RACE_EXTENSION>
                                                        </ULDD:OTHER>
                                                    </EXTENSION>
                                                </HMDA_RACE>
                                            </HMDA_RACES>

这是我正在尝试的方法,但没有得到想要的结果。

value(''./ROLES[1]/ROLE[1]/BORROWER[1]/GOVERNMENT_MONITORING[1]/HMDA_RACES[child = "ULDD:HMDARaceType"][1]'',''VARCHAR(100)'')

成功的查询将返回值“ NativeHawaiianOrOtherPacificIslander White”。我只得到第一个值“ NativeHawaiianOrOtherPacificIslander”

1 个答案:

答案 0 :(得分:0)

就xpath表达式而言,并在您的问题中使用xml代码,此表达式

*//HMDARaceType/text()

或者这个:

//*[local-name()='HMDARaceType']/text()

选择

    NativeHawaiianOrOtherPacificIslander
    White

这是您要找的吗?