SQL Server 的 OPENXML 问题

Kev*_*3NF 3 xml sql-server

我是 OPENXML 的新手,并且有 90% 的我想做的工作......坚持这个:

<ReportHost name="411.114.42.42">
  <HostProperties>
    <tag name="HOST_END">Wed Nov 11 20:48:43 2015</tag>
    <tag name="LastAuthenticatedResults">8675309</tag>
    <tag name="Credentialed_Scan">true</tag>
    <tag name="policy-used">AWT v6</tag>
    <tag name="ssh-auth-meth">MyPassword</tag>
    <tag name="ssh-login-used">MyLogin</tag>
    <tag name="local-checks-proto">ssh</tag>
    <tag name="host-ip">411.114.42.42</tag>
    <tag name="HOST_START">Wed Nov 11 20:00:01 2015</tag>
  </HostProperties>
</ReportHost>
Run Code Online (Sandbox Code Playgroud)

我想要的结果:

Wed Nov 11 20:48:43 2015
8675309
TRUE
AWT v6
MyPassword
MyLogin
ssh
411.114.42.42
Wed Nov 11 20:00:01 2015
Run Code Online (Sandbox Code Playgroud)

我可以获取名称值(“Host_end”等),但不能获取内容。

我的查询:

Select   * 
from OPENXML (@hdoc,'/ReportHost/HostProperties/tag',1)
WITH (
    name varchar (500)
     )
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想坚持使用 OPENXML,因为我只是花了一天的时间学习它并进入最后一步。

如果我提供了足够的信息,请告诉我。

Ale*_*lex 6

您需要查询nodetype3 以获取元素文本。我xpath稍微改变了你的表达方式,所以它只返回节点文本

EXEC sp_xml_preparedocument @hdoc OUTPUT, @XmlDocument
Select   [text]
from OPENXML (@hdoc,'/ReportHost/HostProperties/tag/text()',3)
Run Code Online (Sandbox Code Playgroud)