草庐IT

StAXStream2SAX

全部标签

java - 如果输入文件中未指定 DTD,我如何强制 SAX 解析器使用 DTD?

在输入文档中没有any文档类型的情况下,如何在解析文档时强制SAX解析器(特别是Java中的Xerces)使用DTD?这可能吗?以下是我的场景的更多详细信息:我们有一堆符合相同DTD的XML文档,这些文档由多个不同的系统生成(我无法更改)。其中一些系统将文档类型添加到它们的输出文档中,而另一些则没有。有些使用命名字符实体,有些则不使用。有些使用命名字符实体而不声明文档类型。我知道这不符合犹太洁食标准,但这是我必须使用的。我正在开发需要用Java解析这些文件的系统。目前,它通过首先将XML文档作为流读取来处理上述情况,尝试检测它是否定义了文档类型,如果不存在则添加文档类型声明。问题是这段

Java SAX 解析器进度监控

我正在用Java编写一个SAX解析器来解析一个2.5GB的维基百科文章XML文件。有没有办法监控Java中的解析进度? 最佳答案 感谢EJP对ProgressMonitorInputStream的建议,最后我对FilterInputStream进行了扩展,使得ChangeListener可以监听当前读取位置字节术语。有了它,您可以更好地控制,例如显示多个进度条以并行读取大的xml文件。这正是我所做的。因此,可监控流的简化版本:/***Aclassthatmonitorsthereadprogressofaninputstream.*

java - org.xml.sax.SAXParseException : Document is invalid: no grammar found.

我在我的开发机器上的Struts应用程序中遇到错误,显然我的配置文件有错误(我已经检查过并且看起来没问题):org.apache.commons.digester.DigestererrorSEVERE:ParseErroratline3column15:Documentisinvalid:nogrammarfound.org.xml.sax.SAXParseException:Documentisinvalid:nogrammarfound.org.apache.commons.digester.DigestererrorSEVERE:ParseErroratline3column1

java - 使用 SAX 解析器确定是否在叶节点

使用org.xml.sax.helpers.DefaultHandler,您能否确定您是否位于endElement(String,String,String)中的叶节点?或者您是否需要使用DOM解析器来确定这一点? 最佳答案 让我们从一些基本定义开始:AnXMLdocumentisanordered,labeledtree.EachnodeofthetreeisanXMLelementandiswrittenwithanopeningandclosingtag.(来自here)。最重要的是:这意味着XML文件具有非常规则、简单的结构

c# - SAX 与 XmlTextReader - C# 中的 SAX

我正在尝试读取一个大型XML文档,并且我想以block的形式读取它,而不是XmlDocument将整个文件读入内存的方式。我知道我可以使用XmlTextReader来做到这一点,但我想知道是否有人使用过SAXfor.NET?我知道Java开发人员对它发誓,我想知道是否值得尝试一下,如果值得,使用它有什么好处。我正在寻找细节。 最佳答案 如果您只是想快速完成工作,XmlTextReader就是为此目的而存在的(在.NET中)。如果您想学习一个事实上的标准(并且在许多其他编程语言中可用),它是稳定的并且会迫使您非常高效和优雅地编码,但它

Java SAX 解析

我需要解析一个XML流。因为我只需要做一次并构建我的java对象,SAX看起来是自然的选择。我正在扩展DefaultHandler并实现startElement、endElement和characters方法,在我的类中有成员,我在其中保存当前读取值(在characters方法中获取)。我做我需要的事情没有问题,但我的代码变得相当复杂,我确信没有理由这样做,我可以做不同的事情。我的XML的结构是这样的:20099true20071120097当我意识到文件的多个区域使用了相同的标签名称时,我的问题就开始了。例如,球员和球队都存在id和name。我想创建我的java类Player和Tea

java - org.xml.sax.SAXParseException : The reference to entity "T" must end with the ';' delimiter

我正在尝试使用DOM解析器解析包含一些特殊字符(如“&”)的XML文件。我收到saxparse异常“对实体的引用必须以定界符结尾”。有没有办法克服这个异常,因为我不能修改XML文件来删除特殊字符,因为它来自不同的应用程序。请建议一种解析此XML文件以获取根元素的方法?提前致谢这是我正在解析的XML部分EDTA/THAMWASHjhc^72.METERSOLVENT:Meter21LITERSofR.O.WATERthroughtheaddlineintoFT-250.Startagitator.R.O.WATER<ZLlLITERS•NOTE:Thefollowingisatoo

java - 如何告诉 Java SAX 解析器忽略无效字符引用?

当尝试使用诸如的字符引用来解析不正确的XML时,Java的SAX解析器会因诸如之类的fatalerror而惨死org.xml.sax.SAXParseException:Characterreference""isaninvalidXMLcharacter.有什么办法解决这个问题吗?在将XML文件交给SAX解析器之前,我是否必须清理它?如果是这样,是否有一种优雅的方式来解决这个问题? 最佳答案 使用XML1.1!skaffman是完全正确的,但你可以坚持在你的文件的顶部,你会保持良好的状态。如果您正在处理流,请编写一

python - 在 Python 中设置 sax 解析器的编码

当我将utf-8编码的xml提供给ExpatParser实例时:deftest(filename):parser=xml.sax.make_parser()withcodecs.open(filename,'r',encoding='utf-8')asf:forlineinf:parser.feed(line)...我得到以下信息:Traceback(mostrecentcalllast):File"",line1,inFile"test.py",line72,insearch_testparser.feed(line)File"/System/Library/Frameworks/P

python - 如何使用 python SAX 解析器获取标签之间的文本?

我需要的只是获取相应标签的文本并将其持久化到数据库中。由于xml文件很大(4.5GB),我使用的是sax。我使用characters方法获取文本并将其放入字典中。但是,当我在endElement方法中打印文本时,我得到了一个新行而不是文本。这是我的代码:defcharacters(self,content):text=unescape(content))self.map[self.tag]=textdefstartElement(self,name,attrs):self.tag=namedefendElement(self,name)if(name=="sometag")prints