PHP-阅读和修复大无效的XML文件
我必须阅读一些非常重的XML文件(在200 MB和1 GB之间),对于其中一些而言,这些文件是无效的.让我给你一个小例子: Some article 50 % Coton 50% Lyocell 显然,g:material标签中有一个缺少的 关闭标签.此外,开发此提要的人应该将g:material内容包含在CDATA中,他们没有……基本上,这就是我要做的:添加此缺失的CDATA部分. 我尝试使用SAX解析器读取此文件,但是在读取标签时,由于缺少
2 2023-05-30
编程技术问答社区
PHP SAX解析器用于HTML?
我需要HTML SAX(不是DOM!)PARSER,才能处理无效的HTML代码. 我需要它的原因是要过滤用户输入HTML(删除所有属性和标签 除了允许的)和将HTML内容截断为指定的长度. 有什么想法? 解决方案 SAX用于处理有效的XML,并在无效标记上失败.处理无效的HTML标记需要比SAX解析器通常保持更多状态. 我不知道HTML有任何类似SAX的解析器.最好的镜头是在之前使用HTML通过整齐,然后使用XML解析器,但这可能会失败您首先使用SAX解析器的目的. 其他解决方案 尝试使用 HTML SAX解析器 其他解决方案 总结为两个步骤: 使用整洁将"自由html"转换为"好xhtml". 使用 xml解析器 to xhtml作为xml sax api . . 使用 tidy (!) html"进入XHTML(或者当您无法相信您的"假定XHTML").参见 cleanrepair 方法.它需要更多的时间,但是使用大文件(!)...
2 2023-05-28
编程技术问答社区
XMLReader是一个SAX解析器,还是一个DOM解析器,还是两者都不是?
我正在测试各种读取方法(可能很大,经常读取)XML配置文件中的XML配置文件.不需要写作.我有两个成功的实现,一种使用 simplexml (我知道是DOM解析器),另一个使用 xmlReader . . 我知道DOM阅读器必须读取整个树,因此使用更多的内存.我的测试反映了这一点.我还知道,萨克斯解析器是一种"基于事件的"解析器,它使用较少的内存,因为它从流中读取每个节点而不检查下一步. xmlreader还从流程中读取光标,提供有关当前节点的数据.因此,听起来绝对像XMLReader( http://us2.php.net/xmlreader ) em>不是 dom解析器,但我的问题是,是萨克斯解析器还是其他?似乎XMLReader的行为是SAX解析器的行为,但不会自己投掷事件(换句话说,您可以用XMLReader构建SAX解析器吗?) 如果是其他东西,它的分类是否具有名称? 解决方案 xmlreader 称自己为"拉parser." XMLReader扩
0 2023-05-27
编程技术问答社区
在PHP中解析格式不好的HTML
在我的代码中,我使用OpenOffice将一些样式的XLS文档转换为HTML. 然后,我使用xml_parser_create解析表. 问题是OpenOffice使用未锁定的 和标签创建OldSchool HTML,它不会创建医生,也不引用属性 . 我知道的PHP解析器不喜欢这样,并产生XML格式化错误.我目前的解决方案是在解析文件之前通过文件运行一些言论,但这既不好也不快. 您知道(希望包括的)PHP-Parser,不在乎这些错误吗?或者也许是修复"破碎" html的快速方法? 解决方案 解决"修复"破html的解决方案可能是使用 htmlpurifier /em>: HTML净化器是符合标准的 用php编写的HTML过滤器库. HTML净化器不仅会删除 所有恶意代码(更称为 XSS)经过彻底审核, 确保白名单,它 还将确保您的文档符合标准 另一种想法可能是尝试使用 em>(引用): 函数解析HTML包含
0 2023-05-27
编程技术问答社区
使用Perl XML :: SAX修改XML文档
我正在尝试使用XML :: SAX修改XHTML文档的部分,但是我所有的尝试都失败了. 这是我想做的: #!/usr/bin/perl package MyHandler; use strict; use warnings; use base qw(XML::SAX::Base); use Data::Dumper; sub start_element { my $self = shift; my $data = shift; if( $data->{LocalName} eq 'span') { $data->{LocalName} = 'naps'; } $self->SUPER::start_element($data); # GOOD (and easy) ! #print Dumper($data); } 1; #============================ #Main pr
2 2023-05-25
编程技术问答社区
使用SAX在Perl中解析XML
我需要使用SAX将XML文件解析为PERL-进行以下电子邮件验证检查. 如果" ID"仅包含字母数字字符,其长度在5到10 之间 如果" LastLogindate"不比" CreationDate" 年龄大 如果'subscriptionMontlyfee'= 0 &&'sisscriptionType'!= free 如果'paymentmode'是未定义的&&'sisscriptionType'!=免费 如果配置 内部邮件是否存在 是否存在外部邮件 如果InternalMail =外部邮件 否则,请返回警报(打印消息以通知). accounts.xml abcd asd
0 2023-05-25
编程技术问答社区
dom4j SAXReader-stop parsing
我正在用saxreader解析XML文件,并希望在某个时间(超时)之后停止,以防文件太大.在很高的水平上,我想在ContentHandler(例如Startelement)中扔一个saxexception. . 此处描述了这个想法:但是,DOM4J的saxreader使用elementHandler,其中" onstart"和" onend"事件不允许抛出异常.我在这里做什么有点困扰. 有什么建议吗?谢谢. 解决方案 当您得到太多时,您总是可以抛出运行时例外.要么自己制作自己,要么使用通常不会发生的现有现有的,并将其用作出去的手段.
4 2023-05-20
编程技术问答社区
错误。类型不匹配:不能从ArrayList<Subchild>转换到ArrayList<String>。
嗨,我有一个XML文件成功地解析了我的.现在,我遇到了很多错误后,我正在更改XML文件中的简单修改.如何解决此错误,我不知道我发布了我的XML文件1st并使用SAX Parser. 我有两个旋转器,如果我单击1st旋转器的显示test1,test2,test3,然后我选择test1 show test1 sub tag名称stest1 to stest5.如果选择test2我的第二个旋转器显示stest6到stest10这是我的工作XML文件输出,现在我尝试从我的XML文件中添加一个标签,已经从我的XML文件中添加我的SLTAG显示名称标签,现在我添加了我的问题.我的问题是如何将两个值输入我的sltag,我需要单独的字符串值,因此我在sltag数组列表中传递了类,也可以在声明名称和路径列表列表中创建类,然后如何获得两个字符串值我的目的是当我选择我的目的时我想在同一屏幕底部显示一些图像的第二个旋转器值我试图获取路径字符串值. 这是我的错误: 1.错误行:输入不匹配:无法从arr
0 2023-05-20
编程技术问答社区
不能检索嵌套在另一标签内容中的XML标签
感谢您的阅读! 使用XML解析教程来自用以下结构解析简单的XML RSS进料. 一切正常,除了以下情况外,所有值都可以解析:我无法获得 tag的内容. This is Title 10 This is a description for a sample feed This is link 这就是endElement()方法的样子: @Override public void endElement(String uri, String localName, String qName) throws S
0 2023-05-20
编程技术问答社区
运行萨克斯分析器
AM使用SAX Parser.可以告诉我如何运行它.以及运行它所需的一切(JDK)..我可以有一个可以解析Android XML和正常XML 解决方案 SAX解析器是通过创建ContentHandler对象来实现的,该对象实现了与解析XML文档时发生的事件相对应的某些回调函数.例如,当解析器开始解析文档时,调用startDocument方法,当发现一个新标签时,startElement被调用.同样,当解析器找到标签或文档的末尾或发现无效的序列时,endElement,endDocument和error被调用. 以这种方式考虑:Java SAXParser类知道如何解析XML文档,但是当发现感兴趣的事物时,它依赖于某个处理程序班来知道该如何处理它们. DefaultHandler类是一个助手实现,您可以扩展以关注有趣的事物. 其他解决方案 您可以直接使用ContentHandler(请参见下文),而不是在需要的情况下扩展Defaulthandler.我相信在Android
0 2023-05-20
编程技术问答社区
如何在Characters方法中使用SAX分析器读取转义字符?
我使用解析器来解析以下XML: Test 111-111-2222 lee h&y SAX解析器的字符方法仅读取地址数据,直到" Lee H"为止,因为它不考虑'&'作为角色.我需要在地址元素中获取完整的文本.关于我应该如何做的任何想法?这是我的萨克斯解析器(这里的地址是一个标志,通知地址元素在xml中存在): boolean address=false; public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase("Address"))
2 2023-05-20
编程技术问答社区
SAX解析器因为有<br />标签而忽略了文本
这里有一个轻微的问题,我不知道如何修复它. 我有一个看起来像这样的XML文件: Item 1 Description Text 1
Description Text 2 我有一个看起来像这样的萨克斯解析器: public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("item".equals(qName)) { currentItem = new Item(); } else if ("title".equals(qName)) { parsingTitle = true
2 2023-05-20
编程技术问答社区
并发的SAX处理大型简单的XML文件?
我有几个巨大的XML文件(10GB-40GB),它们具有非常简单的结构:只有一个包含多个行节点的单个根节点.我正在尝试使用Python中的SAX解析它们,但是每行我必须进行的额外处理意味着40GB文件需要一整天的时间才能完成.为了加快事情的速度,我想同时使用所有核心.不幸的是,萨克斯解析器似乎无法处理XML的"畸形"块,这是当您寻求文件中的任意线并尝试从那里解析时,这就是您得到的.由于SAX解析器可以接受流,因此我认为我需要将XML文件分为八个不同的流,每个流都包含[行数]/8行,并带有虚假的打开和关闭标签.我该怎么做?或者 - 我可能缺少更好的解决方案吗?谢谢! 解决方案 您无法轻易将SAX解析分为多个线程,也不需要:如果您只是在没有任何其他处理的情况下运行解析,则应在20分钟左右的时间内运行.专注于您对ContentHandler中数据的处理. 其他解决方案 我建议的方法是将整个XML文件读为内部格式,然后进行额外的处理. SAX应该足够快,可以在不超过一个小时内读取
2 2023-05-20
编程技术问答社区
安卓utf-8文件的解析
我有一些.xml在UTF-8中编码的文件.但是,每当我尝试在平板电脑上解析它们(Idea Pad,Lenovo,Android 3.1)时,我都会遇到相同的错误: org.xml.SAXParseException: Unexpected token (position: TEXT @1:2 in java.io.StringReader@40bdaef8). 这些是抛出例外的行: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource inputSource = new InputSource(); inputSource.setCharacterStream(new StringReader(xmlData)); Document doc = db.parse(inputS
0 2023-05-20
编程技术问答社区
如何在Android上使用SAX解析不同的XML文件?
我有以下方案. 我作为请求将XML文件发送到服务器,并获取XML文件作为响应,以及所有这些作为Android上的背景线程. 使用各种值序列化XML请求.然后,SAX读取XML响应并将其放入列表中.整个请求/响应过程使用AsyncTask类. 进行背景线程. 问题是我有不同类型的响应,我不知道根据已发送请求来解析响应的方法. 我如何根据请求A和解析器B基于请求B? 编辑:具有不同类型的响应,我的意思是XML文件看起来不同.它具有不同的标签和不同的属性. 解决方案 这是我看到的选项: 您可以根据请求(应该具有某种上下文)来基于解析功能.如果您知道请求是A型,则知道响应必须使用解析器a. 您可以使用所有类型的通用解析器,然后根据第一个已知的标签或属性来决定要做什么. 首先分析,然后进行分析.取出所有响应元素,并从中构建对象或对象图.将它们传递给它们,如果需要的话,请将它们变为您的应用程序(不要尝试编辑XML-您毕竟要解析它,您希望尽快完成).
0 2023-05-20
编程技术问答社区
C++ sax2解析器问题
我想解析XML文件.我的XML看起来像这样: tracker localhost:58303 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.
0 2023-05-20
编程技术问答社区
安卓系统。SaxParser使用ISO-8859-1编码的问题
在用Android解析时面临一些问题.问题是服务器中的XML以setEncoding(i get )格式设置为" ISO-8859-1",并且Android设备似乎忽略了该编码. 例如,这是来自服务器的原始XML的一部分: C:\Documents and Settings\zashael\My Documents\PFC\RUP\Pautas para la Presentación RUP Iteraciones de Construcción.ppt computer_1 192.168.0.5:2
0 2023-05-20
编程技术问答社区