我在阅读包含多个列和记录的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语句中更改什么才能生成我需要的结果?请有人帮帮我吗?感谢