以前验证XML一直使用dtd的,今天尝试着用xsd作验证,可是网上的例子一直跑不起来。折腾了半天才发现是例子里面对于XML文件的命名空间没有设置清楚,这里解决下方案记录:
[note.xml]
<?xml version="1.0"?>
<note xmlns="http://adcoup.baidu.com/schema/note">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
网上的例子就是在这里没设置对xmlns,这里的xmlns一定要和下面note.xsd中的targetNamespace和xmlns一致
[note.xsd]
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://adcoup.baidu.com/schema/note" xmlns="http://adcoup.baidu.com/schema/note"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string" />
<xs:element name="from" type="xs:string" />
<xs:element name="heading" type="xs:string" />
<xs:element name="body" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
[java]
String configFileLocation = "/note.xml";
String xsdFileLocation = "/note.xsd";
InputStream configInputStream = this.getClass().getResourceAsStream(configFileLocation);
if (configInputStream == null) {
throw new IllegalArgumentException("can not find resource[" + configFileLocation + "]");
}
InputStream xsdInputStream = this.getClass().getResourceAsStream(xsdFileLocation);
if (xsdInputStream == null) {
throw new IllegalArgumentException("can not find resource[" + xsdFileLocation + "]");
}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new SAXSource(new InputSource(xsdInputStream)));
factory.setSchema(schema);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(new ErrorHandler() {
@Override
public void warning(SAXParseException exception) throws SAXException {
throw new RuntimeException(exception);
}
@Override
public void fatalError(SAXParseException exception) throws SAXException {
throw new RuntimeException(exception);
}
@Override
public void error(SAXParseException exception) throws SAXException {
throw new RuntimeException(exception);
}
});
document = builder.parse(configInputStream);
System.out.println(document);
分享到:
相关推荐
因此,本文将重点介绍如何使用DOM4j结合javax.xml.parsers包中的API来实现XML的有效性校验证。 #### DOM4j与XSD校验 在本例中,作者选择使用DOM4j库来进行XML的解析与校验,并且结合了javax.xml.parsers包中的...
2. **验证XML文档**:使用XML解析器或者XML Schema处理器(如Java的JAXB、Apache XMLBeans等)来检查XML文档是否符合XSD的定义。验证过程能发现并报告不符合规范的元素或属性。 3. **根据XML Schema生成XML**:在...
- **在应用程序中使用 XML Schema**:XML Schema 可以用于验证 XML 数据的有效性,确保其符合预期的结构和格式要求。 #### 四、XML Schema 标准 - **XML Schema 是 W3C 标准**:XML Schema 在 2001 年成为了万维网...
在Java中,XML Schema(XSD)用于定义和验证XML文档的结构和数据类型,确保文档遵循特定的规范。XML Schema文档使用XML语法定义了一系列规则,这些规则描述了有效XML文档应该具有的元素、属性、数据类型以及它们之间...
`xmlschema-core-2.0.3.jar` 是一个Java库,专门用于解析和操作XML Schema文档,它支持XML Schema 1.1标准。 在Spring Web服务中,XML Schema Core库扮演着关键角色。Spring Web Service框架是基于合同优先...
使用`XmlSchema-1.4.6.jar` 这样的库可以简化这个过程,提供了一种标准和方便的方式来处理XML Schema,从而让开发者可以专注于业务逻辑而不是底层的XML处理。 在实际项目中,当遇到类似问题时,应首先检查项目依赖...
XmlSchema-1.4.7.jar 是一个Java库,它实现了W3C的XML Schema标准,用于处理XML Schema文档。这个版本(1.4.7)可能是该库的一个稳定版本,提供给用户免费使用。XML Schema是XML的一种规范,定义了如何验证XML文档的...
在Java中,XML Schema的验证可以使用javax.xml.validation包,提供了独立于模式语言的验证服务接口。该包提供了三个类来验证文档:SchemaFactory、Schema和Validator。 在实际应用中,XML Schema可以用于: 1. ...
* 文档验证:XML Schema可以用于验证XML文档的正确性,确保文档符合预定义的结构和内容。 * 数据存储:XML Schema可以用于定义数据存储的格式和结构,确保数据的正确性和一致性。 XML Schema的优点: * 提高数据...
- 验证XML文档:创建`Validator`对象,然后使用它来验证XML文档是否符合XML Schema。 - 动态解析XML Schema:根据需要加载和解析XML Schema文档,以适应不同的业务需求。 - 查询XML Schema信息:获取元素、属性、...
通过这些库,你可以加载XML Schema文件,验证XML文档是否符合Schema定义,也可以根据Schema生成XML文档。 标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和...
这可以通过编程语言中的XML解析库或XML工具实现,例如Java的JAXB,.NET框架的XmlSchema类等。 10. **学习资源**:"XMLSchema.chm"这样的帮助文档通常会详细解释XML Schema的语法、用法和示例,对于初学者来说是非常...
在Java环境中,`xmlschema-1.4.5.jar`是一个关键组件,它提供了一系列API供开发者使用,以便在应用程序中解析、验证XML文档。这个库通常被集成到那些需要处理XML数据,比如Web服务、数据交换或配置文件的应用中。它...
3. **实例解析**:通过具体例子展示如何编写XML Schema,以及如何使用XML Schema来验证XML文档。 4. **工具支持**:介绍一些常用的XML Schema编辑器和验证工具,如XMLSpy、 Oxygen XML Editor等,以及如何利用这些...
这段代码会验证XML文件是否符合`students.xsd`中定义的模式。如果XML文档与XSD不匹配,`validate()`方法将抛出异常,程序将在运行时停止,并提供有关验证失败的详细信息。 总结来说,Java中实现XML Schema验证文件...
XML Schema 是一种强大的工具,用于定义和验证XML文档的结构和数据内容。它作为XML的数据定义语言,允许开发者创建复杂的模式来确保XML文档遵循特定的规则和格式,从而提高数据的准确性和一致性。 首先,XML Schema...
10. **XML Schema**:XML Schema定义了XML文档的结构和数据类型,是验证XML文档是否合法的重要工具。 通过学习本书,读者可以掌握Java与XML的集成技巧,理解如何利用Java API处理XML文档,以及如何构建和消费Web...
4. **XmlSchema-1.1.jar**: 这是Apache的XmlSchema项目,它为Java应用程序提供了XML Schema 1.1规范的实现。XML Schema是一种用于定义XML文档结构和数据类型的语言,它可以验证XML文档是否符合预定义的规则。这个库...
XML Schema 是一种强大的工具,用于规范和验证 XML(可扩展标记...在实际编程中,你可以使用各种编程语言(如 Java、Python、C# 等)的库或框架来解析和应用 XML Schema,以确保你的 XML 文档符合预设的结构和规则。