草庐IT

XMLReader

全部标签

php - 从 XMLReader 打开的 simplexml 中的 CData

我有一堆XML文件,我正在使用XMLReader将其加载到我的脚本中,创建DOM对象,然后将其转换为Simplexml。问题是其中一个XML文件使用SIMPLEXML忽略的CDATA,通常使用SIMPLEXML_LOAD_FILE我会添加LIBXML_NOCDATA参数,但是因为我使用的是simplexml_import_dom,所以我不知道如何在下面的sceanrio中忽略CDATA。有什么想法吗?非常感谢布雷特$file='test.xml';$reader=newXMLReader();$reader->open($file);while($reader->read()){//a

php - XmlReader::next 在返回 false 时如何定位光标

如果我有一些XML,例如:book#1book#2author#1author#2将我的光标移动到我循环使用的第一个book元素:do{//...}while($xml->next("book"));当我的光标位于最后一个book元素上并调用next("book")时,光标会发生什么情况?它是否停留在最后一个book元素上并返回false。是否移动到并返回false。它还有别的作用吗?我不知道如何获取当前光标位置来自己解决这个问题。 最佳答案 查看了该函数的源代码:http://lxr.php.net/xref/PHP_5_4/ex

php - SimpleXML 还是 XMLReader?

这个问题在这里已经有了答案:BestXMLParserforPHP[duplicate](6个答案)关闭9年前。两者哪个流传更大?我想从http://freshmeat.net/projects-xml/mysql/mysql.xml?branch_id=46519中读出版本号但我想使用更多人拥有的那个。如果您知道另一种从mysql获取最新稳定版本号的方法,请告诉我;)

php - XMLReader 是 SAX 解析器、DOM 解析器,还是两者都不是?

我正在测试在PHP中读取(可能很大,读取非常频繁)XML配置文件的各种方法。永远不需要写作。我有两个成功的实现,一个使用SimpleXML(我知道它是一个DOM解析器),另一个使用XMLReader。我知道DOM读取器必须读取整棵树,因此会占用更多内存。我的测试反射(reflect)了这一点。我也知道SAX解析器是一个“基于事件”的解析器,它使用较少的内存,因为它从流中读取每个节点而不检查下一个节点。XMLReader还从流中读取游标,提供有关其当前所在节点的数据。所以,听起来XMLReader(http://us2.php.net/xmlreader)显然不是DOM解析器,但我的问题

php - 服务器 A 使用 xmlreader 从服务器 B 上的 xmlwriter 读取 XML

我有两个服务器服务器A读取http://www.some-url.com/xmlwriter_src.php使用$reader=newXMLReader();$reader->open('http://www.some-url.com/xmlwriter_src.php');while($reader->read()){/*--dosomething--*/}服务器B创建一个xml流$writer=newXMLWriter();$writer->openURI('php://output');$writer->startDocument("1.0");$writer->startEle

php - 在 PHP 中使用 XML-Reader 进行 XML 验证

我在验证生成的XML字符串时遇到错误。我用XML-Reader加载了XML-String并分配了XSD-File进行验证。有对象ID和URL可以根据允许的字符模式进行验证。我认为ID和网址是正确的。但为什么验证过程会产生错误?我有这样的错误信息:Element'objectID':[facet'pattern']Thevalue'ffc89'isnotacceptedbythepattern'^[a-z]{1,1}[a-z0-9.-]{3,14}$'.Element'objectID':'ffc89'isnotavalidvalueofthelocalatomictype.Elemen

PHP xml阅读器: How to cache xsd schema?

我正在使用PHPxmlreader来验证和解析xml数据。此xml通过XMLReader::setSchema函数使用来自本地文件的一些xsd模式和通过xsd:import/include来自http://的远程xsd模式进行验证。一切正常,但每次调用时它都会从网络中获取xsd模式并从磁盘读取。所以我的问题是:是否有在本地RAM中缓存远程xsd模式的方法?对于本地模式文件,我认为Linux中的tmpfs可以正常工作,但是否有另一种方法来缓存本地xsd模式文件?解决方案感谢VolkerK指出xmlcatalog系统。它适用于libxml/phpxmlreader。在Linux中,只需编辑

php - 使用 PHP XMLReader 对 XML 树中的所有属性进行排序

我有一些PHP代码可以将XML文件转换为CSV文件。在测试期间,我没有创建CSV文件,只是以CSV格式回显结果。只要XMLReader到达一个空元素,它就会输出该元素的所有属性。1)有没有一种方法可以输出属性名称及其值,即(是否有一个与$xml->value一起使用的$xml->AttributeName)?2)有没有办法对整个树中的所有属性进行排序,而不仅仅是空元素中的属性?open('H8_data.xml',null,1read()&&$numisEmptyElement){if($xml->hasAttributes){while($xml->moveToNextAttribu

php - 使用 PHP 和 XMLReader 解析 XML

我一直在尝试使用PHP和XMLReader解析一个非常大的XML文件,但似乎无法获得我正在寻找的结果。基本上,我正在搜索大量信息,如果a包含某个邮政编码,我想返回那部分XML,或者继续搜索直到找到该邮政编码。本质上,我会将这个大文件分解成几个小块,这样就不必查看数千或数百万组信息,可能只有10或20组。这是一些我想要的XML//searchthroughxml//cacheTX02217asavariable//cacheGrandeGablesatTheTerraceasavariableGrandeGablesatTheTerrace//cacheGrandeCommunicati

php - 通过 17gb xml 文件解析/扫描

我正在尝试解析stackoverflow转储文件(Posts.xml-17gb)。它的形式为:.我必须将每个问题与他们的答案“分组”。基本上找到一个问题(posttypeid=1)使用另一行的parentId找到它的答案并将其存储在db中。我尝试使用查询路径(DOM)执行此操作,但它一直在退出(139)。我的猜测是因为文件太大,我的PC无法处理它,即使交换空间很大。我考虑过xmlreader,但正如我在使用xmlreader时看到的那样,该程序会多次读取文件(查找问题、查找答案、重复很多次),因此不可行。我错了吗?还有其他方法吗?帮助!这是一次性解析。 最佳