使用PL/SQL从XML文件获取XML方案
我有一个pl/sql过程,它解析xml文件并将其导入到不同的表中。但是这种xml来自外部系统,所以很难理解,当他们改变方案时。我需要从新文件中获取XML模式,并将其与以前使用PL/SQL导入的模式进行比较。您只需使用dbms\u xmlschema.registerSchema在数据库中注册外部XML模式,然后使用使用PL/SQL从XML文件获取XML方案,xml,oracle,Xml,Oracle,我有一个pl/sql过程,它解析xml文件并将其导入到不同的表中。但是这种xml来自外部系统,所以很难理解,当他们改变方案时。我需要从新文件中获取XML模式,并将其与以前使用PL/SQL导入的模式进行比较。您只需使用dbms\u xmlschema.registerSchema在数据库中注册外部XML模式,然后使用XmlType.isSchemaValid通过此模式检查外部XML- SQL> begin 2 dbms_xmlschema.registerSchema('test'
XmlType.isSchemaValid
通过此模式检查外部XML-
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.
SQL>begin
2 dbms_xmlschema.registerSchema('测试',
3 '
4.
8.
9
10
11
12
13
14
15
16 ');
17结束;
18 /
PL/SQL过程已成功完成。
SQL>声明
2 xml XmlType:=XmlType('JohnJohanson');
3 xml2 XmlType:=XmlType('John');
4开始
5如果xml.isSchemaValid('test')=1,则
6 dbms_output.put_行('xml valid');
7其他
8 dbms_output.put_行('xml无效');
9如果结束,则结束;
10如果xml2.isSchemaValid('test')=1,则
11 dbms_output.put_行('xml2 valid');
12其他
13 dbms_output.put_行('xml2无效');
14如果结束,则结束;
15结束;
16 /
xml有效
xml2无效
PL/SQL过程已成功完成。
主要问题是他们不共享方案,只共享文件,所以我需要从文件中获取此方案。但它是有用的信息=)您可以手动生成XSD一次(或使用在线资源,如),然后将其注册到数据库中,并使用方法isSchemaValid检查文件。