Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

235
Vistas
Búsqueda de XPath por texto que contiene comillas

Considere un texto que contiene comillas simples y dobles. Lo estoy almacenando en una cadena literal JS

 const sampleText = `Uses the "crow's foot" notation rather than classic ER notation to depict a relationship`

Necesito encontrar el elemento div que contiene este texto. Estoy usando la función document.evaluate

 const xpath = `//div[text()="${sampleText}"]` document .evaluate(xpath, document, null, XPathResult.ANY_TYPE, null) .iterateNext();

Pero la llamada a la función no arroja un XPath válido. Intenté agregar escaped blackslash \\ antes double quotes " en sampleText pero no tuve suerte. Intento fallido:

 const sampleText = `Uses the \\"crow's foot\\" notation rather than classic ER notation to depict a relationship`

Error:

 Failed to execute 'evaluate' on 'Document': The string '//div/text()="Uses the \"crow's foot\" notation rather than classic ER notation to depict a relationship"' is not a valid XPath expression.

Además, otras respuestas no pudieron ayudar ya que mi cadena contiene comillas dobles y simples y necesita código en JS

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Encontré una solución. Usa la función concat y separa las comillas. Escribí una función simple para tomar una cadena y sacar una cadena literal para usarla en concat(outString)

 const xConcatString = (sampleText) => { const splitText = sampleText.split('"'); const xText = []; splitText.forEach((ele) => { xText.push(`"${ele}"`); xText.push(`'"'`); }); xText.pop(); return xText.join(","); };

Explicación: xpath no admite caracteres de escape , por lo que la única opción es usar double quotes cuando la cadena contiene single quotes y viceversa. Pero podemos usar el operador concat para dividir la cadena por cualquier tipo de comilla que decidas y envolverla en otra. En la función anterior, estoy dividiendo por single quote .

. funciona mejor que text() al encontrar el elemento xpath a través del texto que contiene. Por lo tanto, de la muestra en la pregunta,

 const sampleText = `Uses the "crow's foot" notation rather than classic ER notation to depict a relationship` const xpath = `//div[.=concat(${xConcatString(sampleText)})]` document .evaluate(xpath, document, null, XPathResult.ANY_TYPE, null) .iterateNext();

Sugerencia: Las comillas en la cadena de salida de xConcatString se volverán confusas, pero es una lista de cadenas separadas por comas y cada elemento de la cadena está entre comillas dobles.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda