es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Generando el mapa del sitio con DOMDocument: falta el AttributeNode en la salida.

Estoy intentando generar un sitemap.xml, aquí está la versión simplificada de mi código:

    $dom = new \DOMDocument();
    $dom->encoding = 'utf-8';
    $dom->xmlVersion = '1.0';
    $dom->formatOutput = true;
    $xml_file_name = './sitemap.xml';
    $urlset = $dom->createElement('urlset');

    $attr_ = new \DOMAttr('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
    $urlset->setAttributeNode($attr_);

    $url_node = $dom->createElement('url');

    $url_node_loc = $dom->createElement('loc',   'http://localhost' );
    $url_node->appendChild($url_node_loc);

    $url_node_lastmod = $dom->createElement('lastmod',  '2021-08-03T22:17:47+04:30' );
    $url_node->appendChild($url_node_lastmod);

    $urlset->appendChild($url_node);

    $dom->appendChild($urlset);
    $dom->save($xml_file_name);
    dd('done');

Aquí está la salida en mi sitemap.xml:

Este archivo XML no parece tener ninguna información de estilo asociada con él. El árbol del documento se muestra a continuación.

<urlset>
    <url>
        <loc>http://localhost</loc>
        <lastmod>2021-08-03T22:17:47+04:30</lastmod>
    </url>
</urlset>

Necesito agregar algunos atributos a mi etiqueta urlset, aquí es cómo lo he hecho:

    $attr_ = new \DOMAttr('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
    $urlset->setAttributeNode($attr_);

Pero por alguna razón esto no aparece en mi archivo sitemap, urlset no tiene atributos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar atributos a la etiqueta urlset, debe utilizar el método setAttribute() en lugar de setAttributeNode(). Así es como puede modificar su código para agregar el atributo:

    $urlset = $dom->createElement('urlset');
    $urlset->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
    

    Esto agregará el atributo xmlns:xsi con el valor http://www.w3.org/2001/XMLSchema-instance` a la etiquetaurlset`. Una vez que genere el archivo XML del mapa del sitio, debería ver el atributo en la salida.

Comments are closed.