p5.js | función cargarXML()

La función loadXML() se usa para leer el contenido de un archivo o URL y devolverlo como un objeto XML. El archivo debe estar presente en el directorio del boceto para poder acceder. Este método se puede utilizar para admitir tamaños de archivo de hasta 64 MB.

Esta función es asíncrona, por lo que se recomienda llamarla en la función preload() para asegurarse de que la función se ejecute antes que las otras funciones.

Sintaxis:

loadXML(filename, callback, errorCallback )

Parámetros: esta función acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:

  • nombre de archivo: esta es una string que indica la ruta del archivo o la URL desde donde se deben cargar los datos XML.
  • devolución de llamada: esta es una función que se llama cuando esta función se ejecuta con éxito. El primer argumento de esta función son los datos XML cargados desde el archivo. Es un parámetro opcional.
  • errorCallback: esta es una función a la que se llama si hay algún error al ejecutar la función. El primer argumento para esta función es la respuesta de error. Es un parámetro opcional.

Los siguientes ejemplos ilustran la función loadXML() en p5.js:

Ejemplo 1:

/* == Contents of books.xml ==
  
<book>
    <name>The Adventures of Sherlock Holmes: Part One</name>
    <author>Arthur Conan Doyle</author>
    <price>323</price>
    <genre>Detective fiction</genre>
</book>
  
*/
  
let loadedXML = null;
  
function setup() {
  createCanvas(500, 200);
  textSize(22);
  
  text("Click on the button below to "
       + "load XML from file", 20, 20);
  
  // Create a button for loading the XML
  loadBtn = createButton("Load XML from file");
  loadBtn.position(30, 50)
  loadBtn.mousePressed(loadXMLFile);
}
  
function loadXMLFile() {
  
  // Load the XML from file
  loadedXML = loadXML('books.xml', onFileload);
}
  
function onFileload() {
  text("XML loaded successfully...", 30, 100);
  let book = loadedXML.getChildren();
    
  // Get the content of the tags
  let name = book[0].getContent();
  let author = book[1].getContent();
  let price = book[2].getContent();
  let genre = book[3].getContent();
  
  text("Name: " + name, 30, 140);
  text("Author: " + author, 30, 160);
  text("Price: " + price, 30, 180);
  text("Genre: " + genre, 30, 200);
}

Producción:
load-xml-books

Ejemplo 2:

/* == Contents of movies.xml ==
  
<movies>
    <movie year="1972" director="Francis Ford Coppola">
        The Godfather
    </movie>
    <movie year="1939" director="Victor Fleming">
        The Wizard of Oz
    </movie>
    <movie year="1941" director="Orson Welles">
        Citizen Kane
    </movie>
</movies>
  
*/
  
let loadedXML = null;
  
function setup() {
  createCanvas(500, 450);
  textSize(22);
  
  text("Click on the button below to "
        + "load XML from file", 20, 20);
  
  // Create a button for loading the XML
  loadBtn = createButton("Load XML from file");
  loadBtn.position(30, 50)
  loadBtn.mousePressed(loadXMLFile);
}
  
function loadXMLFile() {
  
  // Load the XML from file
  loadedXML = loadXML('movies.xml', onFileload);
}
  
function onFileload() {
  
  // Get the children with the "movie" tag
  let children = loadedXML.getChildren('movie');
  
  for (let i = 0; i < children.length; i++) {
  
    // Get the content of the tag
    let name = children[i].getContent();
  
    // Get a numerical attribute
    let year = children[i].getNum('year');
  
    // Get a string attribute
    let director = children[i].getString('director');
  
    text("Name: " + name, 30, 100 + i * 80);
    text("Year: " + year, 30, 120 + i * 80);
    text("Director: " + director, 30, 140 + i * 80);
  }
}

Producción:
load-xml-movies

Editor en línea: https://editor.p5js.org/

Configuración del entorno: https://www.geeksforgeeks.org/p5-js-soundfile-object-installation-and-methods/

Referencia: https://p5js.org/reference/#/p5/loadXML

Publicación traducida automáticamente

Artículo escrito por sayantanm19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *