繁体   English   中英

使用PL / SQL从XML文件获取XML方案

[英]Get XML scheme from XML file using PL/SQL

我有pl / sql过程,该过程分析xml文件并将其导入到不同的表中。 但是这个xml来自外部系统,所以当他们更改方案时很难理解。 我需要从新文件中获取XML方案,并将其与以前使用PL / SQL导入的方案进行比较。

您只需要使用dbms_xmlschema.registerSchema在数据库中注册外部xml模式,然后使用XmlType.isSchemaValid通过此模式检查外部XmlType.isSchemaValid

SQL> begin
  2    dbms_xmlschema.registerSchema('test',
  3  '<?xml version="1.0" encoding="UTF-8"?>
  4  <xs:schema xmlns="test"
  5             xmlns:xs="http://www.w3.org/2001/XMLSchema"
  6             elementFormDefault="qualified"
  7             attributeFormDefault="unqualified">
  8      <xs:element name="root">
  9          <xs:complexType>
 10              <xs:sequence>
 11                  <xs:element name="name"/>
 12                  <xs:element name="lastName"/>
 13              </xs:sequence>
 14          </xs:complexType>
 15      </xs:element>
 16  </xs:schema>');
 17  end;
 18  /

PL/SQL procedure successfully completed.

SQL> declare
  2    xml XmlType := XmlType('<root><name>John</name><lastName>Johanson</lastName></root>');
  3    xml2 XmlType := XmlType('<root><name>John</name></root>');
  4  begin
  5    if xml.isSchemaValid('test') = 1 then
  6      dbms_output.put_line('xml valid');
  7    else
  8      dbms_output.put_line('xml not valid');
  9    end if;
 10    if xml2.isSchemaValid('test') = 1 then
 11      dbms_output.put_line('xml2 valid');
 12    else
 13      dbms_output.put_line('xml2 not valid');
 14    end if;
 15  end;
 16  /
xml valid
xml2 not valid

PL/SQL procedure successfully completed.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM