Java中XML格式的验证
如何在Java中验证XML文件的良好格式?您可以尝试“Java XML验证API” 您可以尝试“Java XML验证API”Java中XML格式的验证,java,xml,Java,Xml,如何在Java中验证XML文件的良好格式?您可以尝试“Java XML验证API” 您可以尝试“Java XML验证API” 只需使用验证解析器即可: import javax.xml.parsers.*; SAXParserFactory factory=SAXParserFactory.newInstance(); factory.setValidating(true); SAXParser parser=pf.newSAXParser(); DocumentBuilderFactory
只需使用验证解析器即可:
import javax.xml.parsers.*;
SAXParserFactory factory=SAXParserFactory.newInstance();
factory.setValidating(true);
SAXParser parser=pf.newSAXParser();
DocumentBuilderFactory也有类似的方法
从JavaDoc:
设置验证
公共无效设置验证(布尔验证)
指定此代码生成的解析器将验证文档
当它们被解析时。默认情况下
该值设置为false
注意这里的“验证”是指定义的验证解析器
在XML推荐中。换句话说
换句话说,它本质上只是控制
DTD验证。(遗产除外
JAXP 1.2中定义的两个属性。)
使用现代模式语言,如W3CXMLSchema或RELAXNG
您可以配置
解析器必须是非验证解析器
通过离开setValidating(布尔值)
方法false,然后使用
要关联的setSchema(Schema)方法
语法分析器的模式
参数:
validating - true if the parser produced by this code will validate documents as they are parsed; false otherwise.false otherwise.
只需使用验证解析器:
import javax.xml.parsers.*;
SAXParserFactory factory=SAXParserFactory.newInstance();
factory.setValidating(true);
SAXParser parser=pf.newSAXParser();
DocumentBuilderFactory也有类似的方法
从JavaDoc:
设置验证
公共无效设置验证(布尔验证)
指定此代码生成的解析器将验证文档
当它们被解析时。默认情况下
该值设置为false
注意这里的“验证”是指定义的验证解析器
在XML推荐中。换句话说
换句话说,它本质上只是控制
DTD验证。(遗产除外
JAXP 1.2中定义的两个属性。)
使用现代模式语言,如W3CXMLSchema或RELAXNG
您可以配置
解析器必须是非验证解析器
通过离开setValidating(布尔值)
方法false,然后使用
要关联的setSchema(Schema)方法
语法分析器的模式
参数:
validating - true if the parser produced by this code will validate documents as they are parsed; false otherwise.false otherwise.
验证和良好的形式不是一回事。要检查文档的格式是否良好,您可以尝试对其进行解析。如果格式不正确,解析将失败。验证要求将文档写入架构(如DTD)以进行检查。@bobince,我的错。我的意图是检查是否有良好的形式。因此,我只需解析xml字符串并检查错误?基本上是的。格式不正确的文档根本无法解析。除了一个缺点:如果您有一个带有定义实体的外部子集的
,那么您需要告诉解析器获取“外部实体”(外部子集和任何外部
s)确保每个实体文档中的代码>引用已在某处定义。包含解析器的非外部实体如果包含外部定义的实体引用,则无法100%确保文档格式正确。这相当混乱。。。实际上,在XML中使用DTD的所有事情都是一场灾难,但现在我们开始了。幸运的是,现在DTD的使用越来越少,因为每个人都讨厌它。希望您可以在没有外部定义实体的情况下进行验证。验证与良好的形式性不是一回事。要检查文档的格式是否良好,您可以尝试对其进行解析。如果格式不正确,解析将失败。验证要求将文档写入架构(如DTD)以进行检查。@bobince,我的错。我的意图是检查是否有良好的形式。因此,我只需解析xml字符串并检查错误?基本上是的。格式不正确的文档根本无法解析。除了一个缺点:如果您有一个带有定义实体的外部子集的
,那么您需要告诉解析器获取“外部实体”(外部子集和任何外部
s)确保每个实体文档中的代码>引用已在某处定义。包含解析器的非外部实体如果包含外部定义的实体引用,则无法100%确保文档格式正确。这相当混乱。。。实际上,在XML中使用DTD的所有事情都是一场灾难,但现在我们开始了。幸运的是,现在DTD的使用越来越少,因为每个人都讨厌它。希望您可以在没有外部定义实体的情况下离开。