包含多个列和记录的CDATA值的XML文件

时间:2017-12-21 09:04:14

标签: xml cdata

我在阅读包含多个列和记录的CDATA值的XML文件时遇到困难,而不是通常的标记条目,如下所示:

    <?xml version="1.0" encoding="UT32"?>
      <S:Env xmlns:S="http://soap.org/">
        <S:Body>
          <ns2:request xmlns:ns2="http://ris.com/">
            <arg0>
              <item>
                <name>IDVAR_SMLORT</name>
                <value> Beckumerstr./Beckenfarderweg ,  59302  Oelde</value>
              </item>
              <item>
                <name>IDVAR_SMLJAHR</name>
                <value>16</value>
              </item>
              <item>
                <name>IDVAR_MATRIX</name>
                <value><![CDATA[<Matrix version="1">
                  <Items>
                    <item id="i1" name="Code"/>
                    <item id="i2" name="Date"/>
                  </Items>
                  <Infos>
                    <Info no="1">
                      <Value itemId="i1">ZW</Value>
                      <Value itemId="i2">2016-03-22</Value>
                    </Info>
                    <Info no="2">
                      <Value itemId="i1">8502647794</Value>
                      <Value itemId="i2">EMAILG</Value>
                    </Info>
                    <Info no="3">
                      <Value itemId="i1">8502647794</Value>
                      <Value itemId="i2">TELP</Value>
                    </Info>
                  <Infos>
                </Matrix>
                ]]></value>
              </item>
            </arg0>
          </ns2:request>
        </S:Body>
      </S:Env>

这是我用来读取上面的xmlfile的SQL语句:

    SELECT ExtractValue( Value(p), '/item/name/text()')  as IdvarName,
           ExtractValue( Value(p), '/item/value/text()') as IdvarValue
    FROM   Table( XMLSequence (Extract( xmlFile, '/arg0/item' ))) p )

上面的XML文件至少有3条记录。前两个是直接数据,但最后一个是复杂的。它首先定义列/字段名称。之后它需要多个记录。我能够阅读前两个而不是第三个。此外,我注意到如果我将URL地址保留在XML文件中,我将无法读取文件,从而导致运行时错误或未找到数据。但是如果我删除它,SQL语句就可以了。

我已经离开这里了。我应该在SQL语句中更改什么才能生成我需要的结果?请有人帮帮我吗?感谢

0 个答案:

没有答案