0

我目前做了很多数据解析,并且玩弄了用于 XML 的 PHP 函数,例如简单的 XML 和其他一些这里和那里。

但处理它们似乎总是存在某种问题,主要是由于数据的呈现方式。

我发现最可靠的方法是始终简单地使用 preg_match_all 和正则表达式将我的数据拉入脚本进行处理。

有没有人看到这个问题?使用正则表达式而不是现成的 XML 解析器有什么缺点?

我主要关心的是资源的速度和服务器利用率。

4

2 回答 2

1

如果您使用 DOMDocument 和 DOMXpath,我怀疑这些会解决您的问题。

请参阅http://jp2.php.net/manual/en/class.domdocument.phphttp://jp2.php.net/manual/en/class.domxpath.php

不过,您能否提供一个示例来说明您正在尝试做的事情?

编辑
要直接回答您的问题:正则表达式很容易搞砸——尤其是处理像 xml 这样的层次结构。即使你做对了,它也可能比使用 xpath 慢。

编辑2
只是补充一下,php的xpath实现,DOMXpath只支持xpath 1.0。如果您需要使用正则表达式来评估元素的内容或其属性之一,那么您需要支持 xpath 2.0.... 或使用有风险、容易出错的正则表达式。

于 2009-10-08T15:43:51.097 回答
1

XML 解析是一项严肃的、高开销的业务。如果您的数据流足够简单,可以使用正则表达式进行解析,那么这将是解析它的最有效方法。

如果您想在最小化资源的同时进行 XML 解析,那么 SAX 解析器可能是您最好的选择。它不会像手工制作的正则表达式那样有效,但它可能已经足够好了。

http://www.brainbell.com/tutorials/php/Parsing_XML_With_SAX.htm

DOM 和 Simple XML 解析器需要加载整个文档,然后他们可以验证文档,然后将其转换为节点结构,然后您就可以使用数据了。听起来解析器需要做很多工作?这是。但对于许多目的,它仍然是合适的。

在我的大部分工作中,我已经放弃了 XML,而正在使用 JSON。

于 2009-10-08T15:44:48.020 回答