regex - una - descargar buscador de archivos para windows 7
Xpath encuentra archivos para Windows? Analizador xml para buscar archivos en Windows (2)
Así que tenemos 1500 páginas xhtml en digamos 100 subcarpetas de / myfolder. Quiero encontrar constelaciones malvadas de
<goodTag>
....
<evilTag/>
....
<evilTag/>
....
</goodTag>
En mi caso actual, solo está permitido tener
<goodTag>
....
<evilTag/>
...
</goodTag>
y no 2 etiquetas malvadas dentro de una buena etiqueta. Esto es solo un ejemplo. A veces debo buscar algo como
<outter>
....
<someTag someAttribute="iDoEvil" />
...
</outter>
He estado navegando por un tiempo y no pude encontrar una herramienta que me ayudara a hacerlo. ¿Qué soluciones de software libre / código abierto están disponibles en Windows?
¿Cómo son los archivos xhtml? básicamente son páginas web creadas para JSF. Usamos nuestras propias etiquetas y seguimos haciendo cambios en ellas y, por lo tanto, tenemos que vigilar bien a la mala constelación de la que no se ha pensado
Básicamente estoy preguntando porque finalmente terminé haciéndolo con expresiones regulares, lo que hace que la gente de aquí se vuelva loca.
Esta es una solución bash
:
- encontrar todos los archivos xml en el directorio actual
- enumera todos los archivos xml que contienen
<someTag someAttribute="iDoEvil" />
for i in `find . -name ''*.xml''`
do
if xmlstarlet sel -H -t -m ''//someTag[@someAttribute="iDoEvil"]'' -v @someAttribute "$i" >/dev/null
then
echo "$i"
fi
done
Nota: No he tratado de escribir un script de DOS
en Windows, pero la idea es la misma.
Puede descargar xmlstarlet
(versión de Windows) aquí .
Si está dispuesto a escribir su propio programa Java, puede usar una combinación de Apache commons IO y jOOX :
// Use apache commons to recurse into your file structure:
for (File file : FileUtils.listFiles(yourDir, new String[] { ".xml" }, true)) {
// Use jOOX to parse the file and match the "bad" combination with XPath:
if ($(file).xpath("//goodTag[count(.//evilTag) > 1]").size() > 0) {
System.out.println("Match : " + file);
}
}
Tenga en cuenta que si no está preparado para escribir su propio programa, tal vez SuperUser sea un mejor sitio para esta pregunta ...