Estoy tratando de usar select-xml
para eliminar algunas cosas de una solución de SharePoint. Tengo un directorio de soluciones que contiene una serie de características, y en lugar de abrir cada feature.xml
y seleccionar nombres de características a mano y ponerlas en una lista, esperaba hacer el equivalente usando powershell
y select-xml
.PowerShell select-xml xpath no parece funcionar
Mi intento fue algo como esto:
ls -recurse -filter feature.xml | select-xml "/Feature"
y no tengo nada, así que traté de esto:
ls -recurse -filter feature.xml | select-xml "//*"
que parecía hacer lo que tenía que hacer. Obtuve una lista de cada nodo XML en todos los archivos feature.xml en mi solución.
Probé expresiones XPath como "// Feature" y "Feature", ninguna de las cuales obtuvo ningún resultado.
Me parece que mis expresiones XPath son correctas, pero el comportamiento de select-xml es un poco desconcertante. Alguien sabe por qué esto podría estar pasando?
Si su "feature.xml" sigue [esto] (http://msdn.microsoft.com/en- us/library/ms475601.aspx) documentación, debe usar un prefijo vinculado al URI del espacio de nombres 'http: // schemas.microsoft.com/sharepoint /' para esa prueba QName. De lo contrario: '// * [local-name() = 'Feature']' –
@Alejandro: la característica xml solo tiene un atributo xmlns = "http://schemas.microsoft.com/sharepoint/". No soy un experto, pero ¿eso no configura el espacio de nombres predeterminado? Pensé que si se configuraba el espacio de nombres predeterminado, XPath no necesitaría una especificación adicional para él. –
No. Es una pregunta frecuente: una prueba de QName sin prefijo selecciona el elemento en el URI nulo (o vacío) del espacio de nombres. –