<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_DOM</id>
	<title>Curso POO PHP DOM - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_DOM"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_DOM&amp;action=history"/>
	<updated>2026-10-23T11:16:30Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_DOM&amp;diff=36628&amp;oldid=prev</id>
		<title>Vlourido: /* Avaliación de expresións XPath */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_DOM&amp;diff=36628&amp;oldid=prev"/>
		<updated>2013-07-24T18:36:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Avaliación de expresións XPath&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== DOM ==&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/book.dom.php extensión DOM]&amp;#039;&amp;#039;&amp;#039; é moito máis potente e complexa que SimpleXML. Entre outras características, permite diferenciar os tipos de nodos e traballar cos comentarios e as instrucións de procesamento dos documentos XML. Imos ver algunhas das súas principais capacidades.&lt;br /&gt;
&lt;br /&gt;
=== Cargar un documento XML ===&lt;br /&gt;
&lt;br /&gt;
Para cargar un documento XML en memoria empregando a extensión DOM, primeiro temos que instanciar un obxecto da clase &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domdocument.php DOMDocument]&amp;#039;&amp;#039;&amp;#039;, e posteriormente empregaremos un dos seguintes métodos:&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.load.php load]&amp;#039;&amp;#039;&amp;#039;. Carga un documento XML do ficheiro que se indique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;load(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.loadxml.php loadXML]&amp;#039;&amp;#039;&amp;#039;. Carga un documento XML tomando como orixe unha cadea de texto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;loadXML($texto_xml);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moitas veces convén eliminar os nodos de texto baleiros ao importar un documento XML. Para acadalo, debemos empregar a propiedade &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domdocument.php#domdocument.props.preservewhitespace preserveWhiteSpace]&amp;#039;&amp;#039;&amp;#039; da clase &amp;#039;&amp;#039;DOMDocument&amp;#039;&amp;#039; antes de procesar o arquivo ou cadea de texto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;preserveWhiteSpace = false;&lt;br /&gt;
$xml-&amp;gt;load(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tamén é posible empregar a función &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/function.dom-import-simplexml.php dom_import_simplexml]&amp;#039;&amp;#039;&amp;#039; para converter un obxecto SimpleXML a un obxecto &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domelement.php DOMElement]&amp;#039;&amp;#039;&amp;#039;, de xeito inverso ao que facíamos coa función &amp;#039;&amp;#039;simplexml_import_dom&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$sxml = simplexml_load_file(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
// Creamos o novo nodo a partir do SimpleXML&lt;br /&gt;
$dom_element = dom_import_simplexml($sxml);&lt;br /&gt;
// E o importamos a un novo documento&lt;br /&gt;
$dxml = new DOMDocument(&amp;#039;1.0&amp;#039;, &amp;#039;UTF-8&amp;#039;);&lt;br /&gt;
$dom_node = $dxml-&amp;gt;importNode($dom_element, true);&lt;br /&gt;
$dxml-&amp;gt;appendChild($dom_node);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O constructor da clase DOMDocument admite dous parámetros, a versión e o xogo de caracteres do documento, o que nos permite crear novos documentos XML baleiros.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument(&amp;#039;1.0&amp;#039;, &amp;#039;UTF-8&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acceder ao contido dun documento XML ===&lt;br /&gt;
&lt;br /&gt;
Ao cargar un documento XML en memoria empregando a extensión DOM, créase unha árbore de obxectos &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php DOMNode]&amp;#039;&amp;#039;&amp;#039;. Cada un destes obxectos ten &amp;#039;&amp;#039;&amp;#039;propiedades&amp;#039;&amp;#039;&amp;#039; para:&lt;br /&gt;
&lt;br /&gt;
*Acceder ao primeiro fillo (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.firstchild firstChild]&amp;#039;&amp;#039;&amp;#039;) e ao último fillo (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.lastchild lastChild]&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
*Acceder ao nodo pai (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.parentnode parentNode]&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
*Acceder aos nodos seguinte (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.nextsibling nextSibling]&amp;#039;&amp;#039;&amp;#039;) e anterior (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.previoussibling previousSibling]&amp;#039;&amp;#039;&amp;#039;) na orde do documento XML.&lt;br /&gt;
&lt;br /&gt;
* Obter unha lista &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnodelist.php DOMNodeList]&amp;#039;&amp;#039;&amp;#039; dos seus nodos fillos (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnodelist.php childNodes]&amp;#039;&amp;#039;&amp;#039;). A clase &amp;#039;&amp;#039;DOMNodeList&amp;#039;&amp;#039; inclúe un método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domnodelist.item.php item]&amp;#039;&amp;#039;&amp;#039; para acceder aos seus elementos pola súa ubicación na lista, e unha propiedade &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnodelist.php#domnodelist.props.length length]&amp;#039;&amp;#039;&amp;#039; que permite coñecer o número de nodos na lista.&lt;br /&gt;
&lt;br /&gt;
*Obter o nome (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.nodename nodeName]&amp;#039;&amp;#039;&amp;#039;) e o valor (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.nodevalue nodeValue]&amp;#039;&amp;#039;&amp;#039;) do nodo, dependendo do seu tipo.&lt;br /&gt;
&lt;br /&gt;
*Obter o tipo de nodo (&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domnode.php#domnode.props.nodetype nodeType]&amp;#039;&amp;#039;&amp;#039;), referido por unha das [http://docs.php.net/manual/es/dom.constants.php constantes que define a extensión]. Algunhos dos valores posibles son XML_ELEMENT_NODE (é un nodo elemento), XML_ATTRIBUTE_NODE (nodo atributo), XML_TEXT_NODE (nodo de texto) ou XML_COMMENT_NODE (nodo comentario). Dependendo do tipo de nodo, o obxecto pertencerá a unha das clases que herdan de DOMNode: &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domelement.php DOMElement]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domattr.php DOMAttr]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domtext.php DOMText]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domcomment.php DOMComment]&amp;#039;&amp;#039;&amp;#039;, ..., cada unha das cales define os seus propios métodos e propiedades.&lt;br /&gt;
&lt;br /&gt;
:Por exemplo, para acceder ao valor dun atributo emprégase a propiedade &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domattr.php#domattr.props.value value]&amp;#039;&amp;#039;&amp;#039; da clase &amp;#039;&amp;#039;DOMAttr&amp;#039;&amp;#039;, para a etiqueta dun elemento temos a propiedade &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domelement.php#domelement.props.tagname tagName]&amp;#039;&amp;#039;&amp;#039; da clase &amp;#039;&amp;#039;DOMElement&amp;#039;&amp;#039;, e para obter o texto dun nodo pódese facer coa propiedade &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domtext.php#domtext.props.wholetext wholeText]&amp;#039;&amp;#039;&amp;#039; da clase &amp;#039;&amp;#039;DOMText&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
O seguinte script obtén o nome e valor do elemento &amp;#039;&amp;#039;&amp;lt;importe&amp;gt;&amp;#039;&amp;#039; presente no documento de exemplo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;preserveWhiteSpace = false;&lt;br /&gt;
$xml-&amp;gt;load(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
$raiz = $xml-&amp;gt;documentElement;&lt;br /&gt;
echo &amp;quot;Etiqueta: &amp;quot; . $raiz-&amp;gt;firstChild-&amp;gt;firstChild-&amp;gt;tagName . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;
echo &amp;quot;Valor: &amp;quot; . $raiz-&amp;gt;firstChild-&amp;gt;firstChild-&amp;gt;firstChild-&amp;gt;wholeText . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os obxectos da &amp;#039;&amp;#039;&amp;#039;clase DOMElement&amp;#039;&amp;#039;&amp;#039; teñen métodos para acceder aos seus atributos e elementos fillos, por exemplo:&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domelement.hasattribute.php hasAttribute]&amp;#039;&amp;#039;&amp;#039; comproba se existe ou non no elemento un atributo co nome que indiquemos.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domelement.getattribute.php getAttribute]&amp;#039;&amp;#039;&amp;#039; devolve unha cadea co valor do atributo que indiquemos. Tamén é posible devolver un nodo atributo no canto dunha cadea de texto, empregando o método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domelement.getattributenode.php getAttributeNode]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domelement.getelementsbytagname.php getElementsByTagName]&amp;#039;&amp;#039;&amp;#039;, tamén presente na clase &amp;#039;&amp;#039;DOMNode&amp;#039;&amp;#039;, devolve unha lista de nodos (&amp;#039;&amp;#039;DOMNodeList&amp;#039;&amp;#039;) cos descendentes cuxo nome correspóndese co que indiquemos.&lt;br /&gt;
&lt;br /&gt;
O seguinte script obtén os nomes dos actores no [[Curso_POO_PHP_e_XML#Documento_XML_de_exemplo|documento XML de exemplo]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;preserveWhiteSpace = false;&lt;br /&gt;
$xml-&amp;gt;load(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
$actores = $xml-&amp;gt;getElementsByTagName(&amp;#039;actor&amp;#039;);&lt;br /&gt;
foreach ($actores as $actor) {&lt;br /&gt;
    $nome = $actor-&amp;gt;getElementsByTagName(&amp;#039;nome&amp;#039;)-&amp;gt;item(0);&lt;br /&gt;
    echo $nome-&amp;gt;nodeValue . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modificar o contido dun documento XML ===&lt;br /&gt;
&lt;br /&gt;
Os distintos tipos de nodos da extensión DOM inclúen métodos para engadir e eliminar nodos da árbore, como &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domnode.appendchild.php appendChild]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domnode.insertbefore.php insertBefore]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domnode.removechild.php removeChild]&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domelement.removeattribute.php removeAttribute]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Antes de engadir un nodo, deberemos crearlo no documento empregando os métodos &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.createelement.php createElement]&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.createelement.php createAttribute]&amp;#039;&amp;#039;&amp;#039; ou semellantes, dependendo do tipo de nodo.&lt;br /&gt;
&lt;br /&gt;
Por exemplo, para facer no [[Curso_POO_PHP_e_XML#Documento_XML_de_exemplo|documento de exemplo]] cambios semellantes aos que vimos coa extensión SimpleXML, faríamos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;preserveWhiteSpace = false;&lt;br /&gt;
$xml-&amp;gt;load(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
$pelicula = $xml-&amp;gt;getElementsByTagName(&amp;#039;película&amp;#039;)-&amp;gt;item(0);&lt;br /&gt;
$titulo = $pelicula-&amp;gt;getElementsByTagName(&amp;#039;título&amp;#039;)-&amp;gt;item(0);&lt;br /&gt;
$titulo-&amp;gt;nodeValue = &amp;quot;O Santo&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$url = $xml-&amp;gt;createElement(&amp;#039;url&amp;#039;,&amp;#039;http://www.imdb.com/name/nm0000174/&amp;#039;);&lt;br /&gt;
$actor = $xml-&amp;gt;getElementsByTagName(&amp;#039;actor&amp;#039;)-&amp;gt;item(1);&lt;br /&gt;
$actor-&amp;gt;appendChild($url);&lt;br /&gt;
&lt;br /&gt;
$version = $xml-&amp;gt;createAttribute(&amp;#039;versión&amp;#039;);&lt;br /&gt;
$version-&amp;gt;value = &amp;quot;1.0&amp;quot;;&lt;br /&gt;
$xml-&amp;gt;documentElement-&amp;gt;appendChild($version);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como no caso da extensión SimpleXML, podemos pasar o documento modificado a un ficheiro (método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.save.php save]&amp;#039;&amp;#039;&amp;#039; da clase &amp;#039;&amp;#039;DOMDocument&amp;#039;&amp;#039;) ou a unha cadea de texto (método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.savexml.php saveXML]&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
=== Validación de documentos XML ===&lt;br /&gt;
&lt;br /&gt;
Empregando DOM temos acceso a varios mecanismos de validacións para os documentos XML.&lt;br /&gt;
&lt;br /&gt;
* Validación &amp;#039;&amp;#039;&amp;#039;mediante DTD&amp;#039;&amp;#039;&amp;#039;. Pódese validar o documento XML a partires do seu DTD mentres se le poñendo a &amp;#039;&amp;#039;true&amp;#039;&amp;#039; a propiedade &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domdocument.php#domdocument.props.validateonparse validateOnParse]&amp;#039;&amp;#039;&amp;#039; da clase &amp;#039;&amp;#039;DOMDocument&amp;#039;&amp;#039; antes de cargar o documento. Tamén é posible executar a validación unha vez cargado o documento empregando o método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.validate.php validate]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* Validación &amp;#039;&amp;#039;&amp;#039;mediante XML Schema&amp;#039;&amp;#039;&amp;#039;. A validación mediante XML Schema pode facerse indicando o nome do ficheiro (método &amp;#039;&amp;#039;&amp;#039;schemaValidate&amp;#039;&amp;#039;&amp;#039;) ou a cadea de texto (método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.schemavalidatesource.php schemaValidateSource]&amp;#039;&amp;#039;&amp;#039;) nos que se almacena o esquema.&lt;br /&gt;
&lt;br /&gt;
* Validación &amp;#039;&amp;#039;&amp;#039;mediante RelaxNG&amp;#039;&amp;#039;&amp;#039;. De xeito semellante ao caso anterior, pode validarse fronte ao contido dun ficheiro (método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.relaxngvalidate.php relaxNGValidate]&amp;#039;&amp;#039;&amp;#039;) ou dunha cadea de texto (método &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domdocument.relaxngvalidatesource.php relaxNGValidateSource]&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
=== Avaliación de expresións XPath ===&lt;br /&gt;
&lt;br /&gt;
Na extensión DOM inclúese a clase &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/class.domxpath.php DOMXPath]&amp;#039;&amp;#039;&amp;#039;, &lt;br /&gt;
que permite avaliar expresións XPath sobre un documento XML almacenado nun obxecto &amp;#039;&amp;#039;DOMDocument&amp;#039;&amp;#039;. Ao instanciar a clase débese indicar o documento XML sobre o que se van a avaliar as expresións. Os métodos &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domxpath.evaluate.php evaluate]&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;[http://docs.php.net/manual/es/domxpath.query.php query]&amp;#039;&amp;#039;&amp;#039;. A primeira delas intenta devolver un valor simple, e a segunda devolve sempre como resultado un conxunto de nodos (&amp;#039;&amp;#039;DOMNodeList&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Por exemplo, para obter os nomes das actrices presentes no [[Curso_POO_PHP_e_XML#Documento_XML_de_exemplo|documento de exemplo]] podemos facer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new DOMDocument();&lt;br /&gt;
$xml-&amp;gt;preserveWhiteSpace = false;&lt;br /&gt;
$xml-&amp;gt;load(&amp;#039;exemplo.xml&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
$xpath = new DOMXPath($xml);&lt;br /&gt;
$consulta = &amp;#039;//videoteca/actor[sexo = &amp;quot;muller&amp;quot;]&amp;#039;;&lt;br /&gt;
$actores = $xpath-&amp;gt;query($consulta);&lt;br /&gt;
&lt;br /&gt;
foreach ($actores as $actor) {&lt;br /&gt;
    $nome = $actor-&amp;gt;getElementsByTagName(&amp;#039;nome&amp;#039;)-&amp;gt;item(0);&lt;br /&gt;
    echo $nome-&amp;gt;nodeValue . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Vlourido|Víctor Lourido]] 12:13 24 jul 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Vlourido</name></author>
	</entry>
</feed>