`
wenhai_zhang
  • 浏览: 186060 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用SAX验证XML格式--DTD验证

    博客分类:
  • xml
阅读更多
刚写了一个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());
}
}
}
  • com.rar (1.5 KB)
  • 下载次数: 62
分享到:
评论
4 楼 wenhai_zhang 2011-03-01  
wenhai_zhang 写道
zwwspace 写道
不错,正好有个需求,参考参考 不过我的是android上的

这个很久写过一个示例,后面就没搞了。呵呵

---指Android
3 楼 wenhai_zhang 2011-03-01  
zwwspace 写道
不错,正好有个需求,参考参考 不过我的是android上的

这个很久写过一个示例,后面就没搞了。呵呵
2 楼 zwwspace 2011-02-28  
不错,正好有个需求,参考参考 不过我的是android上的
1 楼 jpgtama 2011-02-18  
恩,我跑了楼主的代码,完全可以。


但一处的错误可能会出现几个Error Message。

看看语法高亮:

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-apis-2.0.2.jar ecside 依赖包之一

    同时,对于需要处理XML的项目,理解并熟练运用XML的解析技术是非常关键的,这包括了解如何选择适合的解析模型(DOM、SAX或StAX),以及如何使用XML Schema或DTD来验证文档的结构。 总之,xml-apis-2.0.2.jar 是...

    sax解析xml尤其是获取元素的值或者内容

    - SAX解析器不处理XML的DTD(文档类型定义),如果需要验证XML文档,应考虑使用DOM或StAX解析器。 - SAX解析器不保留XML的结构,只提供事件通知,因此不适合需要回溯或查找元素关系的场景。 - 由于SAX是事件驱动...

    XML学习文档(DTD Schema SAX DOM XSL XPATH)

    Schema是另一种更现代的验证XML文档结构的方法,相比DTD,它提供了更强大的功能。XML Schema Definition (XSD) 使用XML语法来定义XML文档的结构和数据类型。它可以处理复杂的数据类型,如整数、日期、浮点数等,并...

    SAX与JAVA.rar_SAX java_java SAX_java sax download_sax_xml

    8. **SAXChecker.java**:可能是用来验证XML文档是否符合特定的DTD(Document Type Definition)或XML Schema的程序。 9. **NamespaceSupport.java**:SAX解析器通常需要处理命名空间,这个类可能实现了对XML命名...

    XML指南--XML指南.rar

    - 解析器:读取XML文档并验证其语法正确性的工具,分为DOM(Document Object Model)和SAX(Simple API for XML)两种方式。 - DTD和XSD:用于定义XML文档结构和约束,确保数据的准确性。 五、XML在IT行业中的应用 ...

    一些xml开发示例,包括DTD,CSs,xslt,dom sax 等。都可以运行

    使用DTD有助于验证XML文档是否符合预设的规则。 2. CSS(Cascading Style Sheets): CSS是用于控制XML(以及HTML)文档表现的语言。它可以定义文本样式、布局、颜色等视觉效果。虽然XML本身不关心显示方式,但与...

    SAX解析XML

    - SAX解析器通常不检查XML文档的完整性和一致性,如果需要验证,可以设置`Schema`或`DTD`。 - 不同的XML解析库可能有不同的事件处理器接口,例如Apache Xerces和Java内置的SAX解析器。 综上所述,SAX解析XML是一种...

    XML---编程宝典

    “XML编程宝典”这本书会详细讲解这些概念,并提供实例和实践指导,帮助读者从基础到高级,逐步掌握XML的使用,包括XML的解析、验证、序列化、DOM和SAX解析器的使用,以及如何在实际项目中应用XML。通过深入学习,...

    dtd.rar_dtd_java dtd_xml dtd

    5. **Java中的DTD验证**:在Java中,可以使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`类来验证XML文档。首先,创建一个`DocumentBuilderFactory`实例,然后设置其验证属性为true,并指定DTD...

    xml课件--适合初学者

    此外,课件可能还会涉及XML文档类型定义(DTD)或XML Schema,这是用来验证XML文档结构的规则。 习题部分: 习题是检验学习成果的关键环节。对于XML,习题可能包括编写符合XML规范的文档,识别和修正错误的XML代码...

    XML教程------------------

    在提供的“XML实用教程CHM版”中,你将找到更多关于XML的实际应用示例,包括创建XML文档、解析XML、验证XML、XPath查询、XSLT转换、XML与数据库的交互等内容。通过学习这些教程,你将能够熟练掌握XML的使用,提升你...

    SAX处理xml

    使用SAX处理XML文档时,首先需要配置XMLReader,设置处理器,然后启动解析。例如: ```java XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new MyContentHandler()); reader....

    无废话XML---劳虎

    XML,全称可扩展标记...通过学习《无废话XML》这样的书籍,你可以掌握XML的基础知识,理解如何创建、解析和验证XML文档,以及如何利用XML进行数据交换。这将对从事Web开发、数据处理、系统集成等领域的工作大有裨益。

    DOM-and-SAX-implementation:使用 DOM 和 SAX 实现的 xml 解析

    DOM 和 SAX 实现使用 DOM 和 SAX 实现的 xml 解析-> 包库包含使用 DOM 解析 xml 的代码。 正在解析 USER.xml。 -> 包 base1 包含使用 SAX 解析 xml 的代码。 正在解析 USER.xml。更新 1:-> -> xml("User.xml) 与 DTD...

    xml dom,sax解析,schema验证

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web...对于初学者,理解DOM和SAX解析的原理,以及如何使用Xerces-C++进行XML Schema验证,是深入学习XML技术的关键步骤。

    xml指南-chm版本

    DTD是XML的早期验证工具,而XSD提供了更强大、更灵活的数据类型和约束定义。 5. **解析器(Parsers)**:XML解析器负责读取XML文档并将其转化为可操作的数据。有DOM(Document Object Model)解析器,一次性加载...

    数据sax解析

    2. **无内置验证功能**:SAX解析器默认不进行XML文档的验证,需要额外配置DTD或XSD来实现。 3. **编写代码复杂**:相比DOM,SAX解析需要编写更多的事件处理代码,对程序员的要求较高。 ### 使用SAX解析的步骤 1. *...

    xml-apis.jar.zip

    - **XML Schema**: 是XML的一种模式语言,用于定义XML文档的结构和数据类型,提供了比DTD(Document Type Definition)更强大的验证功能。 综上所述,"xml-apis.jar.zip" 包含了处理XML文档所需的Java库,涵盖了从...

    xml基础(dtd约束模式,schema约束模式,xslt样式,sax解析,dom解析,jom解析)

    - DTD可以内嵌在XML文档中,也可以作为外部引用,提供了一种验证XML文档完整性和有效性的方法。 3. **Schema约束模式**: - XSD(XML Schema Definition)取代了DTD,提供了更强大、更灵活的数据类型和结构约束。...

Global site tag (gtag.js) - Google Analytics