我是XML新手,并且想要从具有CLOB列类型的表中加载的XML中提取文本。从放置在Clob字段中的XML中提取来自XML的所有节点的文本Oracle
因为有叶节点,我不能够获得clue.The XML是相当大的,这只是一个片段,如果我可以工作了这一点,我会尽力实现对整个XML。
我有下面的查询,但我没有得到
SELECT *
FROM XML_T y
,XMLTABLE(XMLNAMESPACES('all the name spaces'),
'//e:DocumentServiceID'
--/e:DocumentHeader/e:DocumentServiceID'
PASSING XMLTYPE.createxml(y.xmlty)
COLUMNS service_id varchar2(200) path '@DocumentServiceID'
/* factext varchar2(100) path '@FacText',
fac varchar2(100) path '@Fac',
st_name varchar2(100) path './StreetName',
zipcode varchar2(10) path './PostalCode',
*/
);
我已经把下面的成表服务ID的任何值
<?XML VERSION="1.0" encoding="UTF-8"?>
<E:EnDatDoc xmlns:ext="http://qbc.net/de/City/A-Ex/1.0" xmlns:df="http://xyz.ht.net/yy/Asset/1.0" xmlns:nc="http://pol.org/ni-core/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:E="http://www.yup.net/enterprise">
<E:DocumentHeader>
<E:DocumentServiceID>A_PUSH</E:DocumentServiceID>
</E:DocumentHeader>
<E:DocumentBody>
<df:PropertyRecord>
<ext:Facility>
<nc:FacText>A9</nc:FacText>
<ext:Fac>One St</ext:Fac>
<nc:Facility>
<nc:LocationAddress>
<nc:Addr>
<nc:Street>
<nc:StreetName>18 STR</nc:StreetName>
</nc:Street>
<nc:PostalCode>07854</nc:PostalCode>
</nc:Addr>
</nc:LocationAddress>
</nc:Facility>
<ext:Item>
<nc:MeasureText>40.99</nc:MeasureText>
<nc:length>SF</nc:length>
</ext:Item>
<ext:Gross>
<nc:MeasureText>90.00</nc:MeasureText>
<nc:Length>SF</nc:Length>
</ext:Gross>
<nc:ItemWidth>
<nc:MeasureText>24.83</nc:MeasureText>
<nc:length>FT</nc:length>
</nc:ItemWidth>
<ext:Irregular>FALSE</ext:Irregular>
<ext:Floors>1</ext:Floors>
<ext:Cons>
<nc:StartDate>
<nc:YEAR>1977</nc:YEAR>
</nc:StartDate>
</ext:Cons>
<ext:Conflg>TRUE</ext:Conflg>
<ext:Tax>
<ext:Classtext>1</ext:Classtext>
<ext:Cdesc>1 - 3 Units</ext:Cdesc>
</ext:Tax>
</ext:Facility>
</df:PropertyRecord>
</E:DocumentBody>
</E:EnDatDoc>
这不是一个代码写入服务,您需要研究Oracle的XML函数并尝试编写查询,而不是要求某人为您完成这项工作。您还没有显示您想要提取的内容或您期望的输出内容。 –
@AlexPoole我有一个示例查询,我读了一些文件,并找出了,但我仍然没有得到输出的服务id.I已编辑的问题,并把查询那里 –
@AlexPoole我想提取所有文本因此,我必须为每个文本值创建映射并将其分配给列 –