首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于XML xpath模式的sql server :如何生成嵌套的XML id 1和2

用于XML xpath模式的sql server :如何生成嵌套的XML id 1和2
EN

Stack Overflow用户
提问于 2018-07-26 04:20:46
回答 1查看 76关注 0票数 -1

我是一个xml字符串,如下所示。我想使用sql server for xml xpath来生成此xml字符串。我很难找到id="IP1“和id="IP2”。你能帮我搬一下吗?非常感谢。

代码语言:javascript
复制
    <root>
    <InsuredOrPrincipal id="IP1">
    <GeneralPartyInfo>
    <NameInfo>
    <PersonName>
    <Surname>A </Surname>
    <GivenName>B</GivenName>
    </PersonName>

    </NameInfo>

    </GeneralPartyInfo>

    </InsuredOrPrincipal>


    <InsuredOrPrincipal id="IP2">
    <GeneralPartyInfo>
    <NameInfo>
    <PersonName>
    <Surname>A </Surname>
    <GivenName>B</GivenName>
    </PersonName>

    </NameInfo>

    </GeneralPartyInfo>

    </InsuredOrPrincipal>
    </root>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-26 11:05:36

这应该可以满足您的需求。您可以在SSMS中运行代码来查看它的实际效果。

代码语言:javascript
复制
-- create table variable
DECLARE @table TABLE ( id VARCHAR(10), Surname VARCHAR(50), GivenName VARCHAR(50) );

-- insert test data
INSERT INTO @table ( 
    id, Surname, GivenName 
)
VALUES
( 'IP1', 'A1', 'B1' )
, ( 'IP2', 'A2', 'B2' );

-- return xml results from test data as per required schema
SELECT
    id AS 'InsuredAsPrincipal/@id'
    , Surname AS 'InsuredAsPrincipal/GeneralPartyInfo/NameInfo/PersonName/Surname'
    , GivenName AS 'InsuredAsPrincipal/GeneralPartyInfo/NameInfo/PersonName/GivenName'
FROM @table
FOR XML PATH ( '' ), ROOT( 'root' );

返回的结果XML为:

代码语言:javascript
复制
<root>
  <InsuredAsPrincipal id="IP1">
    <GeneralPartyInfo>
      <NameInfo>
        <PersonName>
          <Surname>A1</Surname>
          <GivenName>B1</GivenName>
        </PersonName>
      </NameInfo>
    </GeneralPartyInfo>
  </InsuredAsPrincipal>
  <InsuredAsPrincipal id="IP2">
    <GeneralPartyInfo>
      <NameInfo>
        <PersonName>
          <Surname>A2</Surname>
          <GivenName>B2</GivenName>
        </PersonName>
      </NameInfo>
    </GeneralPartyInfo>
  </InsuredAsPrincipal>
</root>

我相信这就是你想要做的。这里真正的“魔力”是列数据的别名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51527070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档