jjzjj

php xmlReader 与 xmlparser

coder 2024-04-06 原文

我知道 xmlreader 和其他基于树的解析器(如 simplexml 和 dom)之间的区别。但是xmlreader和xmlparser有什么区别呢?使用一个比另一个有什么好处吗?

我需要解析比较大的 xml 文件,affiliate datafeeds 大约 100M。

最佳答案

他们使用两种不同的软件架构 - 推与拉。

XMLReader 是一个“拉式解析器”。您负责创建一个大循环并调用 read() 函数来向前移动光标。这种软件架构往往更容易直观地理解。

XMLParser 是一个基于事件的“推送解析器”。您负责注册由 start_element、end_element、character_data、start_namespace_decl 等事件触发的回调函数。当您调用 xml_parse() 时,Expat 库将使用您的回调函数处理整个 XML 文档。

如果您不了解推架构与拉架构之间的微妙之处,那么我建议您从 XMLReader 入手,因为“拉”更易于理解且更易于可视化。

关于php xmlReader 与 xmlparser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050342/

有关php xmlReader 与 xmlparser的更多相关文章

  1. xml - Groovy XMLParser - 更新节点文本 - 2

    我有一些XML文件,如果name==testName,我想更改name。所以我写了这样的东西,但它不起作用。我哪里做错了?它向我打印参数类型不匹配,我不知道为什么。StringxmlData="1id1testNamewarnpackage1package22id2nameNameerrorpackage2package5";defloggr=newgroovy.util.XmlParser().parseText(xmlData);for(defit:loggr.children()){if(it.name.text().equals("testName")){it.name.val

  2. xml - 需要使用 XmlParser 将 xml 数据持久化到文件的 xml 标记 - 2

    更新或向xml文件添加内容后,xml声明将被删除。我正在使用XmlParser。这是更新xml中某些内容的代码。defxml=newXmlParser().parseText(newFile(fileLocation).getText('UTF-8'))deffound=xml.myTag1.findAll()found.each{it.mySubTag.value="Updated"}XmlUtil.serialize(xml)defnodePrinter=newXmlNodePrinter(newPrintWriter(newFile(fileLocation)))nodePrin

  3. xml - 默认情况下 XmlParser 和 XmlSlurper 命名空间是否感知? - 2

    在回答这个问题时HowtoreadvaluesfromXMLRequestandwriteintoXMLResponseusingGroovy?与namespace(SOAP)有关XmlSlurper和XmlParser,我意识到默认情况下我实际上无法判断它们是否非命名空间感知。虽然文档这样说(默认情况下不识别命名空间):XmlSlurperXmlSlurper()Createsanon-validatingandnon-namespace-awareXmlSlurperwhichdoesnotallowDOCTYPEdeclarationsindocuments.XmlParserX

  4. xml - 真正删除 XMLParser 对象 Groovy 中的节点 - 2

    如何通过XMLParser真正删除一个节点:x='''abeeff'''xml=newXmlParser().parseText(x)defnodeToDel=xml.A.B.find{it.@C1='a'}xml.remove(nodeToDel)printlnxmlnewXmlNodePrinter(newPrintWriter(newFileWriter(newFile('c:/temp/a.xml')))).print(xml)似乎有效但是!!!!当我将其翻译成我的问题时,它仍然保存原始xmlalthoguh在运行remove-method后返回true。我用谷歌搜索了一下,找

  5. java - XMLParser 正在吃掉我的空格 - 2

    我正在解析的wiki页面丢失了大量空白,我认为这是解析器的问题。我的Groovy脚本中有这个:@Grab(group='org.ccil.cowan.tagsoup',module='tagsoup',version='1.2')defslurper=newXmlSlurper(neworg.ccil.cowan.tagsoup.Parser())slurper.keepWhitespace=trueinputStream.withStream{doc=slurper.parse(it)println"originalContent="+doc.'**'.find{it.@id=='e

  6. xml - Groovy XmlSlurper 与 XmlParser - 2

    我在这个主题上搜索了一段时间,也找到了一些结果,我在文章末尾提到了这些结果。谁能帮我准确回答下面列出的这三个问题?对于哪些用例,使用XmlSluper比XmlParser更有意义,反之亦然(从API/语法的易用性角度来看)?哪个内存效率更高?(看起来像Slurper)哪个处理xml的速度更快?案例一。当我必须读取xml中的几乎所有节点时?案例b。当我只需要读取几个节点时(比如使用gpath表达式)?案例c。什么时候必须更新/转换xml?前提是xml文件不是普通文件(具有xml的深度和大小级别)。资源:http://www.tutkiun.com/2009/10/xmlparser-an

  7. php xmlReader 与 xmlparser - 2

    我知道xmlreader和其他基于树的解析器(如simplexml和dom)之间的区别。但是xmlreader和xmlparser有什么区别呢?使用一个比另一个有什么好处吗?我需要解析比较大的xml文件,affiliatedatafeeds大约100M。 最佳答案 他们使用两种不同的软件架构-推与拉。XMLReader是一个“拉式解析器”。您负责创建一个大循环并调用read()函数来向前移动光标。这种软件架构往往更容易直观地理解。XMLParser是一个基于事件的“推送解析器”。您负责注册由start_element、end_ele

  8. java - 从哪里获取 11.2.0.3 的 Oracle jar 文件 - xdb、aq、i18n、xmlparser - 2

    我正在尝试更新遗留Java应用程序以与Oracle11g版本11.2.0.3兼容。该应用程序在Oracle10g版本10.2.0.4上运行并使用OracleAdvancedQueues。它具有声明的Maven依赖项:aq10.2.0.4.0xdb10.2.0.4.0xml解析器10.2.0.4.0国际化10.2.0.4.0我正在努力寻找适用于11g的相同文件,特别是适用于11.2.0.3的文件。我在各个地方(例如我的Oracle主目录、JDeveloper安装和在线)四处查看,发现了各种名称和版本各异的令人眼花缭乱的jar文件,它们是候选但不是我需要的。谁能告诉我在哪里可以找到正确的j

  9. ios - xmlParser 解析导致在 iOS8 中崩溃,但在 iOS 7 中工作正常? - 2

    在模拟器上运行,[xmlParserparse]在iOS8中会导致崩溃,但在iOS7中工作正常。关于NSXMLParser,我找不到iOS7和iOS8之间的任何区别。相关的:NSData*data=[[NSDataalloc]initWithContentsOfFile:xmlFilePath];NSXMLParser*xmlParser=[[NSXMLParseralloc]initWithData:data];[xmlParsersetDelegate:self];BOOLsuccess=[xmlParserparse];//crashatthisline.

  10. ios - 在 Swift 中使用 XMLParser 解析特定标签并保存为字符串 - 2

    我想解析下面的响应并仅将“pdf-info”标签的值保存为字符串,letserverResponse="\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t

随机推荐