刚写了一个DOM验证XML格式的,现在来一个SAX验证。并附上两个源码
package com;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
class SAXValidator {
public static void main(String[] args) {
try {
String fileName = "conf/invalid_dtd.xml";
File x = new File(fileName);
SAXParserFactory f = SAXParserFactory.newInstance();
f.setValidating(true); // Default is false
SAXParser p = f.newSAXParser();
DefaultHandler h = new MyErrorHandler();
p.parse(x, h);
} catch (ParserConfigurationException e) {
System.out.println(e.toString());
} catch (SAXException e) {
System.out.println(e.toString());
} catch (IOException e) {
System.out.println(e.toString());
}
}
private static class MyErrorHandler extends DefaultHandler {
public void warning(SAXParseException e) throws SAXException {
System.out.println("Warning: ");
printInfo(e);
}
public void error(SAXParseException e) throws SAXException {
System.out.println("Error: ");
printInfo(e);
}
public void fatalError(SAXParseException e) throws SAXException {
System.out.println("Fattal error: ");
printInfo(e);
}
private void printInfo(SAXParseException e) {
System.out.println(" Public ID: " + e.getPublicId());
System.out.println(" System ID: " + e.getSystemId());
System.out.println(" Line number: " + e.getLineNumber());
System.out.println(" Column number: " + e.getColumnNumber());
System.out.println(" Message: " + e.getMessage());
}
}
}
分享到:
相关推荐
同时,对于需要处理XML的项目,理解并熟练运用XML的解析技术是非常关键的,这包括了解如何选择适合的解析模型(DOM、SAX或StAX),以及如何使用XML Schema或DTD来验证文档的结构。 总之,xml-apis-2.0.2.jar 是...
- SAX解析器不处理XML的DTD(文档类型定义),如果需要验证XML文档,应考虑使用DOM或StAX解析器。 - SAX解析器不保留XML的结构,只提供事件通知,因此不适合需要回溯或查找元素关系的场景。 - 由于SAX是事件驱动...
Schema是另一种更现代的验证XML文档结构的方法,相比DTD,它提供了更强大的功能。XML Schema Definition (XSD) 使用XML语法来定义XML文档的结构和数据类型。它可以处理复杂的数据类型,如整数、日期、浮点数等,并...
8. **SAXChecker.java**:可能是用来验证XML文档是否符合特定的DTD(Document Type Definition)或XML Schema的程序。 9. **NamespaceSupport.java**:SAX解析器通常需要处理命名空间,这个类可能实现了对XML命名...
- 解析器:读取XML文档并验证其语法正确性的工具,分为DOM(Document Object Model)和SAX(Simple API for XML)两种方式。 - DTD和XSD:用于定义XML文档结构和约束,确保数据的准确性。 五、XML在IT行业中的应用 ...
使用DTD有助于验证XML文档是否符合预设的规则。 2. CSS(Cascading Style Sheets): CSS是用于控制XML(以及HTML)文档表现的语言。它可以定义文本样式、布局、颜色等视觉效果。虽然XML本身不关心显示方式,但与...
- SAX解析器通常不检查XML文档的完整性和一致性,如果需要验证,可以设置`Schema`或`DTD`。 - 不同的XML解析库可能有不同的事件处理器接口,例如Apache Xerces和Java内置的SAX解析器。 综上所述,SAX解析XML是一种...
“XML编程宝典”这本书会详细讲解这些概念,并提供实例和实践指导,帮助读者从基础到高级,逐步掌握XML的使用,包括XML的解析、验证、序列化、DOM和SAX解析器的使用,以及如何在实际项目中应用XML。通过深入学习,...
5. **Java中的DTD验证**:在Java中,可以使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`类来验证XML文档。首先,创建一个`DocumentBuilderFactory`实例,然后设置其验证属性为true,并指定DTD...
此外,课件可能还会涉及XML文档类型定义(DTD)或XML Schema,这是用来验证XML文档结构的规则。 习题部分: 习题是检验学习成果的关键环节。对于XML,习题可能包括编写符合XML规范的文档,识别和修正错误的XML代码...
在提供的“XML实用教程CHM版”中,你将找到更多关于XML的实际应用示例,包括创建XML文档、解析XML、验证XML、XPath查询、XSLT转换、XML与数据库的交互等内容。通过学习这些教程,你将能够熟练掌握XML的使用,提升你...
使用SAX处理XML文档时,首先需要配置XMLReader,设置处理器,然后启动解析。例如: ```java XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new MyContentHandler()); reader....
XML,全称可扩展标记...通过学习《无废话XML》这样的书籍,你可以掌握XML的基础知识,理解如何创建、解析和验证XML文档,以及如何利用XML进行数据交换。这将对从事Web开发、数据处理、系统集成等领域的工作大有裨益。
DOM 和 SAX 实现使用 DOM 和 SAX 实现的 xml 解析-> 包库包含使用 DOM 解析 xml 的代码。 正在解析 USER.xml。 -> 包 base1 包含使用 SAX 解析 xml 的代码。 正在解析 USER.xml。更新 1:-> -> xml("User.xml) 与 DTD...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web...对于初学者,理解DOM和SAX解析的原理,以及如何使用Xerces-C++进行XML Schema验证,是深入学习XML技术的关键步骤。
DTD是XML的早期验证工具,而XSD提供了更强大、更灵活的数据类型和约束定义。 5. **解析器(Parsers)**:XML解析器负责读取XML文档并将其转化为可操作的数据。有DOM(Document Object Model)解析器,一次性加载...
2. **无内置验证功能**:SAX解析器默认不进行XML文档的验证,需要额外配置DTD或XSD来实现。 3. **编写代码复杂**:相比DOM,SAX解析需要编写更多的事件处理代码,对程序员的要求较高。 ### 使用SAX解析的步骤 1. *...
- **XML Schema**: 是XML的一种模式语言,用于定义XML文档的结构和数据类型,提供了比DTD(Document Type Definition)更强大的验证功能。 综上所述,"xml-apis.jar.zip" 包含了处理XML文档所需的Java库,涵盖了从...
- DTD可以内嵌在XML文档中,也可以作为外部引用,提供了一种验证XML文档完整性和有效性的方法。 3. **Schema约束模式**: - XSD(XML Schema Definition)取代了DTD,提供了更强大、更灵活的数据类型和结构约束。...