Tengo un XML como este almacenado en una variable de cadena en JavaScript:
<metadata> <a>...</a> <b>...</b> <c>...</c> </metadata> <data> <a>...</a> <b>...</b> <c>...</c> </data> Dado que un XML válido solo puede tener una etiqueta raíz única, el mío no puede llamarse válido ya que tiene dos etiquetas raíz: metadata y data . Me gustaría eliminar por completo la etiqueta de metadata , ya que tampoco la uso.
Leí sobre el comando array.Shift(), que elimina el primer elemento de una matriz. Pero como tengo un XML, ¿cómo hago lo mismo? Nuevamente, me gustaría eliminar la etiqueta <metadata> , por lo que el resultado XML se ve así (que se muestra a continuación).
<data> <a>...</a> <b>...</b> <c>...</c> </data>Usar un DOMParser
const xmlString = ` <metadata> <a>...</a> <b>...</b> <c>...</c> </metadata> <data> <a>...</a> <b>...</b> <c>...</c> </data>`; const parser = new DOMParser(); const doc1 = parser.parseFromString(`<root>${xmlString}</root>`, "application/xml"); doc1.querySelector('metadata').remove() console.log(doc1.documentElement.innerHTML)Ya que habla de una cadena, simplemente busque '<datos>' y obtenga la subcadena desde esa posición hasta el final:
let str = ` <metadata> <a>...</a> <b>...</b> <c>...</c> </metadata> <data> <a>...</a> <b>...</b> <c>...</c> </data> ` let data = str.substring(str.search('<data>')) console.log(data)O busque '</metadata>' más dos caracteres de nueva línea para encontrar el inicio de:
let data = str.substring(str.search('</metadata>\n\n') + 13)