Tag: sax

SAX Parser和XML Schema(XSD)validation

哪些Java XML库可以同时对XML Schema(XSD)进行基于SAX的解析和validation? 我真的在寻找最有效的解读和validation大型XML文件的解决方案。 如果您可以提供示例代码,则可获得奖励

从XML元素内容中获取InputStream

我的servlet的doPost()接收一个HttpServletRequest,其ServletInputStream向我发送了一大堆用XML包装的uuencoded数据。 例如,有一个元素: largeChunkEncodedHere 我需要解码块并将其写入文件。 我想从块中获取一个InputStream,使用MimeUtility将其解码为流,并使用该流写入文件—我宁愿不将这个大块读入内存。 XML是平的; 也就是说,没有太多的嵌套。 我的第一个想法是使用SAX解析器,但我不知道如何切换到流来读取块。 谢谢你的想法。 格伦 编辑1:请注意JB Nizet在这篇文章中的悲观回答。 编辑2:我在下面肯定地回答了我自己的问题,并在下面将maximdim的答案标记为正确,即使它没有完全回答这个问题,它确实指引我使用StAX API和Woodstox。

Java:使用SAXParser拆分大型XML文件

我正在尝试使用java的SAXParser将大型XML文件拆分为较小的文件(特别是未压缩的大约28GB的维基百科转储)。 我有一个扩展DefaultHandler的Pagehandler类: private class PageHandler extends DefaultHandler { private StringBuffer text; … @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { text.append(“”); } @Override public void endElement(String uri, String localName, String qName) { text.append(“”); if (qName.equals(“page”)) { text.append(“\n”); pageCount++; writePage(); } if (pageCount >= maxPages) { rollFile(); } } @Override public void […]

在JDOM / DOM中禁用XML实体解析

我正在编写一个用于XML文件后处理的Java应用程序。 这些xml文件来自Semantic Mediawiki的RDF-Export,因此它们具有rdf / xml语法。 我的问题如下:当我读取xml文件时,文件中的所有实体都被解析为其在Doctype中指定的值。 例如我在Doctype中 <!DOCTYPE rdf:RDF[ .. ]> 并在根元素中 这意味着 变 我尝试过使用JDOM和标准Java DOM。 我认为这里的代码与标准DOM相关: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setExpandEntityReferences(false); factory.setFeature(“http://apache.org/xml/features/nonvalidating/load-external-dtd”, false); 并为JDOM SAXBuilder builder = new SAXBuilder(); builder.setExpandEntities(false); //Retain Entities builder.setValidation(false); builder.setFeature(“http://xml.org/sax/features/resolve-dtd-uris”, false); 但是实体在整个xml文档中得到了解决。 我错过了什么吗? 几小时的搜索只引导我进入’ExpandEntities’命令,但它们似乎不起作用。 任何提示都非常感谢:)

使用SAX解析具有未知递归量的XML结构

我必须使用SAX解析器在JAVA中解析XML结构。 问题是结构是递归的,具有未指定的递归计数。 这仍然不是什么大问题,最重要的是我无法利用XML命名空间function,并且每个递归级别的标签都是相同的。 这是结构的一个例子。 正如您所看到的那样,有一个递归,更好的是一个未定义的递归数。 现在我的问题是如何为每次递归提取所有数据并将其保存在HashMap中。 我可以为Tags的出现定义一个ContentHandler并让它在HashMap提取内容并将其放回主内容处理程序中定义的主 HashMap中,但我不确定这样做会很热。 如何在不使用命名空间的情况下提取和保存递归XML结构的内容?

标记必须格式良好

首先,让我说我是SAX和Java的新手。 我试图从一个格式不正确的XML文件中读取信息。 当我尝试使用SAX或DOM Parser时,我收到以下错误: The markup in the document following the root element must be well-formed. 这是我设置XML文件的方式: 0;W650;004;AG-Erzgeb 001;023 … 我可以强制SAX或DOM解析XML文件,即使它们不是格式良好的XML吗? 感谢您的帮助。 非常感激。 Haythem

参考Java中的本地DTD

我有一些XML,我正在使用Java中的SAX解析器进行解析。 它从这个序言开始: 如何更改此设置以使用本地DTD? 我想我可以这样做: 不是那样的,但是那样的东西 。 但是,我需要路径独立于用户的系统。 如何使用具有相对于类路径的路径的本地DTD?

从流输入中解析没有根元素的XML片段列表

在Java中使用SAX api解析XML片段列表是否可行而没有来自流输入的根元素? 我尝试解析这样的XML,但得到了一个 org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed. 甚至在endDocument事件被触发之前。 我不想解决明显但笨拙的解决方案,如“预先添加自定义根元素或使用缓冲片段解析”。 我使用的是Java 1.6的标准SAX API。 如果有人想知道,SAX工厂已经设置了错误(假)。

Java SAXParser – 保持InputStream打开

我有一个BufferedInputStream ,我想用SAXParser解析XML,然后再重复使用它(例如mark(int) & reset() )。 但是,此流在parse()方法中关闭。 有可能以某种方式告诉SAXParser让它保持开放状态吗? 最后一种方法是使用不可关闭的流包装此流。 谢谢。

Xml没有使用sax解析String作为输入

我有一个字符串输入,我需要从中提取简单信息,这里是示例xml(来自mkyong): yong mook kim mkyong 100000 low yin fong fong fong 200000 我如何在我的代码中解析它(我的类中有一个字段String name ): public String getNameFromXml(String xml) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { boolean firstName = false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase(“firstname”)) […]