SQL Server XML加载

时间:2012-09-05 17:32:14

标签: sql-server xml

我有一个具有此结构的XML文件

<Class>
    <ClassNumber>111</Flight_Number>
        <Student>
            <Student_ID>1</Student_ID>
            <Student_ID>2</Student_ID>
            <Student_ID>3</Student_ID>
        </Student>
    </ClassNumber>
</Class>
<Class>
    <ClassNumber>222</Flight_Number>
        <Student>
            <Student_ID>4</Student_ID>
            <Student_ID>5</Student_ID>
            <Student_ID>6</Student_ID>
        </Student>
    </ClassNumber>
</Class>

我希望输出像

111 1
111 2
111 3
222 4
222 5
222 6

请帮忙。我试了很长时间。

此致 弗兰克

1 个答案:

答案 0 :(得分:1)

您的第一个问题是您显示的输入不是XML:</Flight_Number>没有关闭任何打开的元素,并且您没有文档的根元素。

如果预期输入类似于下面查询中的$ doc变量,那么您想要的XQuery表达式将具有此处给出的结构:

let $doc := <Classes>
              <Class>
                <ClassNumber>111</ClassNumber>
                <Student>
                  <Student_ID>1</Student_ID>
                  <Student_ID>2</Student_ID>
                  <Student_ID>3</Student_ID>
                </Student>
              </Class>
              <Class>
                <ClassNumber>222</ClassNumber>
                <Student>
                  <Student_ID>4</Student_ID>
                  <Student_ID>5</Student_ID>
                  <Student_ID>6</Student_ID>
                </Student>
              </Class>
            </Classes>
for $s in $doc//Student_ID
return concat($s/../../ClassNumber, ' ', string($s), '&#xA;')

在我用来测试它的XQuery引擎中,这产生了预期的结果:

111 1
 111 2
 111 3
 222 4
 222 5
 222 6