当前位置: 首页 > 面试题库 >

Java中的XML语法验证

劳通
2023-03-14
问题内容

我一直在尝试找出如何检查XML文件的语法,确保所有标签均已关闭,没有随机字符等。目前,我所关心的是确保在XML文件中没有损坏的XML。文件。

…但是我意识到我不想验证XML文件的结构;我 不想 针对XML Schema(XSD) 进行
验证…我只想检查XML语法并确定它是否正确。


问题答案:

您可以检查是否是一个XML文档 格式良好的 使用下面的代码:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);

DocumentBuilder builder = factory.newDocumentBuilder();

builder.setErrorHandler(new SimpleErrorHandler());    
// the "parse" method also validates XML, will throw an exception if misformatted
Document document = builder.parse(new InputSource("document.xml"));

SimpleErrorHandler上面的代码中引用的类如下:

public class SimpleErrorHandler implements ErrorHandler {
    public void warning(SAXParseException e) throws SAXException {
        System.out.println(e.getMessage());
    }

    public void error(SAXParseException e) throws SAXException {
        System.out.println(e.getMessage());
    }

    public void fatalError(SAXParseException e) throws SAXException {
        System.out.println(e.getMessage());
    }
}

这来自该网站,该网站提供了各种使用Java验证XML的方法。还要注意,此方法将整个DOM树加载到内存中,如果要保存在RAM上,请参阅注释以了解替代方法。



 类似资料:
  • 主要内容:XML 文档必须有根元素,XML 声明,所有的 XML 元素都必须有一个关闭标签,XML 标签对大小写敏感,XML 必须正确嵌套,XML 属性值必须加引号,实体引用,XML 中的注释,在 XML 中,空格会被保留,XML 以 LF 存储换行XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。 XML 文档必须有根元素 XML 必须包含根元素,它是所有其他元素的父元素,比如以下实例中 root 就是根元素: <root> <child> <subchild>.....

  • 标记 XML 使用 < > 来定义标记 所有的 XML 标记必须结束。<para>必须有一个与之配对的</para>;或者使用空标记,例如<para/> XML 标记大小写敏感。<para>和<PARA>是两个不同的标记;在 Docbook 中,所有的标记都是小写的 标记必须正确的嵌套,不允许相互嵌套 <section><para></section></para> 错误 <section><

  • 问题内容: 我想使用Java解析XML文件,并针对XSD模式在同一步骤中对其进行验证。XML文件可能包含几种模式的内容,如下所示: 给定一个名称空间,可以提供相应的xsd文件,但是在解析之前,所使用的名称空间是未知的。如果架构定义了属性的默认值,我也想以某种方式知道这一点。 如果知道架构,我可以验证文件,无需验证就可以解析文件,并且实现了LSResourceResolver。但是,我无法使其全部协

  • 问题内容: 如何使用Java中的XSD验证XML文件?我们事先不知道架构。我希望能够获得,下载XSD,对其进行缓存,然后执行实际的验证。 问题是,使用/ 类,我似乎无法提前掌握。这有什么窍门?我应该学习哪些课程? 也许我可以使用更合适的API?整个问题是,我们需要动态验证,而不必(必需)在本地拥有XSD。 如何获得XSD文件中定义的URL ? 我知道您可以设置功能/属性,但这是另一回事。我需要先从

  • 我需要检测枚举中的错误。 这是我用枚举验证XML和XSD的代码,但我得到了很多错误。有人能给我一些关于错误消息(由java程序打印)的反馈吗? 这是我正在验证的文件 这是我的模式 Java程序 这些是我犯的错误 线程“main”组织中出现异常。xml。萨克斯。SAXParseException:cvc elt。1: 找不到元素“person”的声明。在com。太阳组织。阿帕奇。xerces。内部的

  • 我有一个servlet,它使用打包在.jar存档中的实用程序: 此实用工具获取xml文件流,针对xsd模式执行验证并解析它: xsd文件以: xml文件: Servlet Init方法抛出异常: 如何指定SAXParser在哪里需要xsd模式来验证xml文件? 附注。对不起,我的英语不好 UPD: 我正在尝试添加此属性: UPD2:在xml文件中使用“classpath:appcontext.xs