Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在表(SQL)和查询中加载XML_Sql_Xml_Database_Oracle_Oracle10g - Fatal编程技术网

在表(SQL)和查询中加载XML

在表(SQL)和查询中加载XML,sql,xml,database,oracle,oracle10g,Sql,Xml,Database,Oracle,Oracle10g,我在谷歌上搜索过,但似乎找不到一个直截了当的答案。我有一个简单的表,其中加载了完整XML文件的内容。现在我尝试查询XML数据并对其进行结构化概述,这是可行的,但我需要一些解释 我的问题(见下面使用的数据): 有人能解释一下我如何扩展我的查询,以便我也可以从XML部分“AddressC”查询数据吗。现在我只能从“AddressB”获取数据 这部分到底做了什么,为什么会有url(我从internetz复制了查询):xmltable(xmlnamespaces(“”作为“xsi”) *表中的XML

我在谷歌上搜索过,但似乎找不到一个直截了当的答案。我有一个简单的表,其中加载了完整XML文件的内容。现在我尝试查询XML数据并对其进行结构化概述,这是可行的,但我需要一些解释

我的问题(见下面使用的数据):

  • 有人能解释一下我如何扩展我的查询,以便我也可以从XML部分“AddressC”查询数据吗。现在我只能从“AddressB”获取数据

  • 这部分到底做了什么,为什么会有url(我从internetz复制了查询):xmltable(xmlnamespaces(“”作为“xsi”)

*表中的XML(XML文件2,表中有两个单元格test1和test2):*

<PurchaseOrder>
  <AddressB>
    <Name>Ellen Adams</Name>
    <Street>123 Maple Street</Street>
    <City>Mill Valley</City>
    <State>CA</State>
    <Zip>10999</Zip>
    <Country>USA</Country>
  </Addressb>
  <AddressC>
    <Name>Tai Yee</Name>
    <Street>8 Oak Avenue</Street>
    <City>Old Town</City>
    <State>PA</State>
    <Zip>95819</Zip>
    <Country>USA</Country>
  </AddressC>
</PurchaseOrder>

您的XML无效。结束标记Addressb与开始标记Addressb不匹配

如果这只是您问题中的一个输入错误,那么下面是一个在XML中读取来自不同父级的Street元素的示例

CREATE TABLE T1 (C1 XMLTYPE);

INSERT INTO T1 VALUES (XMLTYPE('<PurchaseOrder>
  <AddressB>
    <Name>Ellen Adams</Name>
    <Street>123 Maple Street</Street>
    <City>Mill Valley</City>
    <State>CA</State>
    <Zip>10999</Zip>
    <Country>USA</Country>
  </AddressB>
  <AddressC>
    <Name>Tai Yee</Name>
    <Street>8 Oak Avenue</Street>
    <City>Old Town</City>
    <State>PA</State>
    <Zip>95819</Zip>
    <Country>USA</Country>
  </AddressC>
</PurchaseOrder>'));


SELECT STREET FROM T1, XMLTABLE('PurchaseOrder/*' PASSING T1.C1 
    COLUMNS 
        STREET VARCHAR2(100) PATH 'Street'
    ) PURCHASEORDER;

数据库中的XML处理(据我所知)没有标准化-您使用的是什么数据库系统?我想您使用的是Oracle
CREATE TABLE T1 (C1 XMLTYPE);

INSERT INTO T1 VALUES (XMLTYPE('<PurchaseOrder>
  <AddressB>
    <Name>Ellen Adams</Name>
    <Street>123 Maple Street</Street>
    <City>Mill Valley</City>
    <State>CA</State>
    <Zip>10999</Zip>
    <Country>USA</Country>
  </AddressB>
  <AddressC>
    <Name>Tai Yee</Name>
    <Street>8 Oak Avenue</Street>
    <City>Old Town</City>
    <State>PA</State>
    <Zip>95819</Zip>
    <Country>USA</Country>
  </AddressC>
</PurchaseOrder>'));


SELECT STREET FROM T1, XMLTABLE('PurchaseOrder/*' PASSING T1.C1 
    COLUMNS 
        STREET VARCHAR2(100) PATH 'Street'
    ) PURCHASEORDER;
STREET                                                                                             
----------------------------------------------------------------------------------------------------
123 MAPLE STREET                                                                                     
8 Oak Avenue