Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将MSSQL服务器表转换为更好的XML格式?_Sql_Xml_Select_Path - Fatal编程技术网

如何将MSSQL服务器表转换为更好的XML格式?

如何将MSSQL服务器表转换为更好的XML格式?,sql,xml,select,path,Sql,Xml,Select,Path,如何转换MSSQL 2012表格(#myTable),如下所示: name|lastname|child1|age1|child2|age2|child3|age3| prnt|prnt2 Jack|Jones |Jill |2 |Joe |4 |Mike |5 | Mark| Lizy <familyTree> <firstname> Jack </firstname> <lastname> Jones

如何转换MSSQL 2012表格(#myTable),如下所示:

name|lastname|child1|age1|child2|age2|child3|age3| prnt|prnt2
Jack|Jones   |Jill  |2   |Joe   |4   |Mike  |5   | Mark| Lizy
<familyTree>
    <firstname> Jack </firstname>
    <lastname> Jones </lastname>
    <babies>
        <baby> Jill </baby>
        <old> 2 </old> 
    <babies>
    <babies>
        <baby> Joe </baby>
        <old> 4 </old> 
    <babies>
   <babies>
        <baby> Mike </baby>
        <old> 5 </old> 
    <babies>
    <father>Mark </father>
    <mother>lizy </mother>
</familyTree>
SELECT 
    name         AS "firstname",
    lastname     AS "lastname",
    child1       AS "babies/baby",
    age1         AS "babies/old",
    child2       AS "babies/baby",
    age2         AS "babies/old",
    child3       AS "babies/baby",
    age3         AS "babies/old",
    prnt         AS "father",
    prnt2        AS "mother"
FROM  #myTable 
         FOR XML PATH('familyTree')
要创建如下XML格式:

name|lastname|child1|age1|child2|age2|child3|age3| prnt|prnt2
Jack|Jones   |Jill  |2   |Joe   |4   |Mike  |5   | Mark| Lizy
<familyTree>
    <firstname> Jack </firstname>
    <lastname> Jones </lastname>
    <babies>
        <baby> Jill </baby>
        <old> 2 </old> 
    <babies>
    <babies>
        <baby> Joe </baby>
        <old> 4 </old> 
    <babies>
   <babies>
        <baby> Mike </baby>
        <old> 5 </old> 
    <babies>
    <father>Mark </father>
    <mother>lizy </mother>
</familyTree>
SELECT 
    name         AS "firstname",
    lastname     AS "lastname",
    child1       AS "babies/baby",
    age1         AS "babies/old",
    child2       AS "babies/baby",
    age2         AS "babies/old",
    child3       AS "babies/baby",
    age3         AS "babies/old",
    prnt         AS "father",
    prnt2        AS "mother"
FROM  #myTable 
         FOR XML PATH('familyTree')
将导致:

<familyTree>
    <firstname> Jack </firstname>
    <lastname> Jones </lastname>
    <babies>
        <baby> Jill </baby>
        <old> 2 </old> 
        <baby> Joe </baby>
        <old> 4 </old> 
        <baby> Mike </baby>
        <old> 5 </old> 
    <babies>
    <father>Mark </father>
    <mother>lizy </mother>
</familyTree>

杰克
琼斯
吉尔
2.
乔
4.
迈克
5.
做记号
丽萃
此结构与上面给出的所需结构不同。如能提供任何帮助或朝正确方向迈出一步,我们将不胜感激?提前谢谢你。

这里是诀窍(以防将来有人试图克服同样的情况)


哪个数据库供应商?很多都内置了用于xml呈现关系数据的功能。很抱歉,忘了提及它。这是微软SQL server 2012。我编辑了问题的标题。谢谢,我能理解你的困惑。同样,我理解它为什么会这样做。你会认为这个年龄是婴儿的属性吗?谢谢你,丹。不幸的是,无法将其更改为属性。它应该是嵌套的节点。我找到了这个链接,但它是用来读取行并将它们格式化为嵌套格式的。我正试着用它做实验。也许有人已经找到了这个问题的解决方案,并阐明了如何做到这一点。