TSQL - 在保持XML结构的同时解析XML变量

时间:2014-08-09 15:48:45

标签: xml tsql

我有一个带有XML参数的过程,我需要能够通过节点“Document”进行拆分,同时保留XML格式,这样我就可以将每个“Document”节点插入到表中。我已经尝试将所有内容放入临时表并使用for xml进行解析,但这不起作用。此示例只有两个“文档”节点,但可以有任何数字 这是XML结构:

DECLARE @XMLVariable xml
SET     @XMLVariable = '<Documents>
  <Document>
    <UncFilePath>\\server\file1.PDF</UncFilePath>
    <Pages>
      <Page>
        <PageNumber>1</PageNumber>
        <IsValidFlg>1</IsValidFlg>
      </Page>
      <Page>
        <PageNumber>2</PageNumber>
        <IsValidFlg>0</IsValidFlg>
      </Page>
    </Pages>
  </Document>
  <Document>
    <UncFilePath>\\server\file2.PDF</UncFilePath>
    <Pages>
      <Page>
        <PageNumber>1</PageNumber>
        <IsValidFlg>1</IsValidFlg>
      </Page>
      <Page>
        <PageNumber>2</PageNumber>
        <IsValidFlg>0</IsValidFlg>
      </Page>
    </Pages>
  </Document>
</Documents>'

最终结果将是两行,包含每个'Document'节点的实际XML(包括):

第1行xml列:

        <Document>
    <UncFilePath>\\server\file1.PDF</UncFilePath>
    <Pages>
      <Page>
        <PageNumber>1</PageNumber>
        <IsValidFlg>1</IsValidFlg>
      </Page>
      <Page>
        <PageNumber>2</PageNumber>
        <IsValidFlg>0</IsValidFlg>
      </Page>
    </Pages>
  </Document>

第2行xml列:

        <Document>
    <UncFilePath>\\server\file2.PDF</UncFilePath>
    <Pages>
      <Page>
        <PageNumber>1</PageNumber>
        <IsValidFlg>1</IsValidFlg>
      </Page>
      <Page>
        <PageNumber>2</PageNumber>
        <IsValidFlg>0</IsValidFlg>
      </Page>
    </Pages>
  </Document>

任何想法都表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:0)

没关系。想出来了。

选择pref.query(&#39;。&#39;)作为文档 FROM @ XMLVariable.nodes(&#39; / / &#39;)AS T(pref)