我正在尝试查询XML时忽略命名空间,因为结果集具有多个命名空间。 我已经到达了DataSets节点,但我无法弄清楚如何获取多个DataSourceName / CommandType / CommandText。 理想情况下我想要:
DataSetName DataSourceName CommandType CommandText
SQLDS SQLDS StoredProcedure ReportProc_aaaaa
SQLDS SQLDS StoredProcedure ReportProc_lalala
非常感谢您的帮助。
DECLARE @xmltable TABLE (myxml XML)
INSERT INTO @xmltable
SELECT
'<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<DataSources>
<DataSource Name="SQLDS">
<rd:DataSourceID>32e83b35-434d-4808-b685-ada14accd0e7</rd:DataSourceID>
<DataSourceReference>SQLDS</DataSourceReference>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="SQLDS">
<Query>
<DataSourceName>SQLDS</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>ReportProc_ServerPerformanceGroup</CommandText>
</Query>
</DataSet>
<DataSet Name="GroupDetails">
<Query>
<DataSourceName>SQLDS</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>ReportProc_lalala</CommandText>
</Query>
</DataSet>
</DataSets>
</Report>'
SELECT myxml.value('(/*:Report/*:DataSets)[1]','varchar(100)') FROM @xmltable
ReportProc_aaaaa
在您的 XML 中找不到。 - Sean B. Durkin