2012-05-16 2 views
0

PHP를 사용하여 큰 XML 파일 (Excel .xlsm 파일에서 추출)을 편집하려고하는데 성능면에서 가장 좋은 것이 궁금합니다. QueryPath 또는 PHP의 DOMDocument?큰 XML 파일을 편집하기위한 QueryPath 또는 DOMDocument?

파일의 무게는 최소 8MB이며, 서식이 지정된 경우 약 400k 줄이 포함됩니다. 피드백

답변

2

QueryPath에 대한

감사는 기본적으로 DOMDocument 주변 단지 래퍼입니다. 그것은 DOMDocument 개체에 비교적 적은 오버 헤드를 추가합니다. attr(), append() 등과 같은 액세스 및 쓰기 작업에 대해서는 성능 차이가 없어야합니다.

그러나 큰 문제는 다음과 같습니다. 찾기.

전통적으로 DOMDocument은 "나무를 걷는 것"또는 DOMNode->getElementsByTagname()을 사용하여 트래버스합니다. 코드를 기꺼이 작성하면 비교적 잘 수행됩니다.

매우 구체적인 선택기 (예 : ': root> foo> bar> baz')를 사용하지 않으면 QueryPath 2.x로 쿼리하는 것이 문서의 크기가 느려질 수 있습니다.

그러나 큰 개체를 쿼리 할 때 Alpha1에 들어가는 QueryPath 3.x는 여러 번 더 빠르게 실행됩니다. qp('foo')을 수행하는 것은 XPath만큼 빠르며 ... 나를 마지막 옵션으로 가져옵니다.

PHP의 libxml 지원과 함께 제공되는 XPath 프로세서가 내장되어 있습니다. PHP 속도가 아닌 C 속도로 실행되기 때문에 대형 XML 문서를 작성하면 성능이 향상 될 수 있습니다. 하지만 (IMHO) 일종의 통증 인 XPath 표현식을 작성해야합니다.

그래서 결론 :

  • 기본 사항 : 어느 하나 할 것입니다.
  • 수정 : 둘 중 하나를 수행합니다.
  • 트래 버팅 횟수가 많습니다.
    • DOMDocument를 사용하면 수동으로 트래버스 할 수 있습니다.
    • QueryPath 2.x에서 느린
    • QueryPath 3.x를이
    • 의 XPath가 가장 빠른 훨씬 빠릅니다입니다 ...하지만 XPath는
+0

피드백을 주셔서 감사합니다. QueryPath 3.x에 대해 몰랐기 때문에 2.2 버전을 버리고 PHP의 DOMDocument를 사용했습니다. XML 구조는 이해하기 쉽고, 매우 깊지도 않습니다 (제 경우에는 최대 5 단계까지). 따라서 사용하는 데 큰 고통이 아닙니다 ... – 3rgo

관련 문제