Java中XML格式的验证

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

如何在Java中验证XML文件的良好格式?

您可以尝试“Java XML验证API”

您可以尝试“Java XML验证API”


只需使用验证解析器即可:

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的使用越来越少,因为每个人都讨厌它。希望您可以在没有外部定义实体的情况下离开。