2010-04-24 3 views
3

phpQuery - очень хороший инструмент, который в прошлом очень помог мне в синтаксическом анализе хорошо сформированных документов XHTML и XML, но в последнее время я столкнулся с проблемой, пытаясь выбрать элементы с двоеточиями в их тэге , такие как следующие:Выбор специальных тегов XML с помощью phpQuery

<isc:thumb><![CDATA[http://example.com/foo_thumb.jpg]]></isc:thumb> 

Я пытался использовать функцию pq(), чтобы выбрать все эти элементы:

foreach (pq("isc:thumb") as $thumbnail) { 
    print pq($thumbnail)->text(); 
} 

к сожалению, это не делает ничего. Если я попробую другой элемент, например тэг id, результаты всплывают так, как ожидалось.

ответ

5

Вы пытаетесь найти элемент thumb, который принадлежит пространству имен isc (см. XML namespace); не тег с именем isc:thumb.

phpQuery может с радостью запросить элементы, расположенные на имени, просто не так, как вы пытаетесь сделать. Вместо этого просто укажите тег в форме namespace|tagname (то есть isc|thumb). Также стоит отметить, что пространство имен должно быть зарегистрировано в обработчике XPath phpQuery (который является всего лишь объектом DOMXPath), чтобы он мог распознавать пространство имен.

Вот краткий пример с образцом XML-документа (очевидно, используйте свой собственный XML и обязательно укажите правильный URI пространства имен).

phpQuery::newDocumentXML('<root xmlns:isc="urn.example.isc"> 
    <isc:thumb><![CDATA[http://example.com/foo_thumb.jpg]]></isc:thumb> 
    <isc:thumb><![CDATA[http://example.com/bar_thumb.jpg]]></isc:thumb> 
</root> 
'); 
phpQuery::getDocument()->xpath->registerNamespace('isc', 'urn.example.isc'); 
foreach (pq("isc|thumb") as $thumbnail) { 
    echo pq($thumbnail)->text() . PHP_EOL; 
} 

Какие выходы:

http://example.com/foo_thumb.jpg 
http://example.com/bar_thumb.jpg 
+1

Отличный ответ! Спасибо за внимание к деталям. – Aristotle

+0

Что делать, если XML выглядит следующим образом '<корень XMLNS: ISC = "urn.example.isc"> тест ' ' – Umair

+0

рд ("ISC | более", $ эскизов)' не показывает antyhing – Umair

Смежные вопросы