【问题标题】:How to use XML Auto to get the format obtained by XML Path in sql serversql server中如何使用XML Auto获取XML Path得到的格式
【发布时间】:2015-04-20 09:43:32
【问题描述】:

我使用的是 sql server 2012。

这是我的查询:

CREATE TABLE #XmlTestTable 
(
    ID INT PRIMARY KEY IDENTITY(1,1),
    FirstName VARCHAR(20),
    LastName VARCHAR(20)
)
INSERT INTO #XmlTestTable (FirstName,LastName) VALUES
('John','Doe'),
('Jane','Doe'),
('Brian','Smith'),
('Your','Mom')

select  FirstName as "Name/@FN",LastName  as "Name/@LN" from #XmlTestTable for xml path('X'),root('Y')

结果如下:

<Y>
  <X>
    <Name FN="John" LN="Doe" />
  </X>
  <X>
    <Name FN="Jane" LN="Doe" />
  </X>
  <X>
    <Name FN="Brian" LN="Smith" />
  </X>
  <X>
    <Name FN="Your" LN="Mom" />
  </X>
</Y>

如何使用XML AUTO获取这种格式

select  FirstName as "Name/@FN",LastName  as "Name/@LN" from #XmlTestTable for xml auto

生成这个:

<_x0023_XmlTestTable Name_x002F__x0040_FN="John" Name_x002F__x0040_LN="Doe" />
<_x0023_XmlTestTable Name_x002F__x0040_FN="Jane" Name_x002F__x0040_LN="Doe" />
<_x0023_XmlTestTable Name_x002F__x0040_FN="Brian" Name_x002F__x0040_LN="Smith" />
<_x0023_XmlTestTable Name_x002F__x0040_FN="Your" Name_x002F__x0040_LN="Mom" />

谁能告诉我为什么我会在上面的格式中得到像_x002F__x0040_FN 这样的刺痛?

【问题讨论】:

  • 查找字符代码 x002F 和 x0040。你得到了什么?你的结论是什么?
  • _x0023__x002F__x0040_ 似乎分别是 #/@ 的转义序列,它们各自的 ASCII 码以十六进制表示.

标签: sql sql-server xml xpath sqlxml


【解决方案1】:
select
    (
        select *
        from (select FirstName as FN, LastName as LN) as Name
        for xml auto, type
    )
from #XmlTestTable as X
for xml auto, root('Y')

---------------------------------
<Y>
  <X>
    <Name FN="John" LN="Doe" />
  </X>
  <X>
    <Name FN="Jane" LN="Doe" />
  </X>
  <X>
    <Name FN="Brian" LN="Smith" />
  </X>
  <X>
    <Name FN="Your" LN="Mom" />
  </X>
</Y>

sql fiddle demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多