其中我的XML文件为:
<?xml version="1.0" encoding="UTF-8"?>
<birthdate>
<month>January</month>
<day>21</day>
<year>1983</year>
<name>aaa</name>
</birthdate>
对应的XSD文件为:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="birthdate">
<xs:complexType>
<xs:sequence>
<xs:element name="month" type="xs:string" />
<xs:element name="day" type="xs:int" />
<xs:element name="year" type="xs:int" />
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>我写的java程序为:
public class XMLParse {
public static void main(String[] args)
throws SAXException, IOException, ParserConfigurationException {
SchemaFactory factory
= SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaLocation = new File("D:\\tmp\\test.xsd");
File xmlFile = new File("D:\\tmp\\test.xml");
Schema schema = factory.newSchema(schemaLocation);
Validator validator = schema.newValidator();
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(xmlFile);
DOMSource source = new DOMSource(doc);
DOMResult result = new DOMResult();
try {
validator.validate(source, result);
Document augmented = (Document) result.getNode();
}
catch (SAXException ex) {
System.out.println(ex.getMessage());
}
}
}
在执行的时候,总是提示:cvc-complex-type.2.4.c:严格输入了匹配通配符,但还是找不到元素“name”的声明。
但是我在XSD中,已经声明了一个<xs:any minOccurs="0"/>的任意类型,支持扩展,但是确总是不正确.
希望个位大虾能给出解决方法.备注:这里由于是工作中的需要,必须使用xs:any任意类型支持.
<?xml version="1.0" encoding="UTF-8"?>
<birthdate>
<month>January</month>
<day>21</day>
<year>1983</year>
<name>aaa</name>
</birthdate>
对应的XSD文件为:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="birthdate">
<xs:complexType>
<xs:sequence>
<xs:element name="month" type="xs:string" />
<xs:element name="day" type="xs:int" />
<xs:element name="year" type="xs:int" />
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>我写的java程序为:
public class XMLParse {
public static void main(String[] args)
throws SAXException, IOException, ParserConfigurationException {
SchemaFactory factory
= SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaLocation = new File("D:\\tmp\\test.xsd");
File xmlFile = new File("D:\\tmp\\test.xml");
Schema schema = factory.newSchema(schemaLocation);
Validator validator = schema.newValidator();
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(xmlFile);
DOMSource source = new DOMSource(doc);
DOMResult result = new DOMResult();
try {
validator.validate(source, result);
Document augmented = (Document) result.getNode();
}
catch (SAXException ex) {
System.out.println(ex.getMessage());
}
}
}
在执行的时候,总是提示:cvc-complex-type.2.4.c:严格输入了匹配通配符,但还是找不到元素“name”的声明。
但是我在XSD中,已经声明了一个<xs:any minOccurs="0"/>的任意类型,支持扩展,但是确总是不正确.
希望个位大虾能给出解决方法.备注:这里由于是工作中的需要,必须使用xs:any任意类型支持.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货