我正在使用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”
答案 0 :(得分:0)
就xpath表达式而言,并在您的问题中使用xml代码,此表达式
*//HMDARaceType/text()
或者这个:
//*[local-name()='HMDARaceType']/text()
选择
NativeHawaiianOrOtherPacificIslander
White
这是您要找的吗?