¿Hay alguna herramienta que pueda (imprimir bastante) formatear el archivo XML, así como ordenar sus elementos y atributos?Herramienta de clasificación/formato XML
Respuesta
He encontrado este post: http://www.biglist.com/lists/xsl-list/archives/200106/msg01225.html con los siguientes elementos XSLT a XML guión y también atribuye ordenar:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<!-- Sort the attributes by name. -->
<xsl:for-each select="@*">
<xsl:sort select="name(.)"/>
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()|comment()|processing-instruction()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
no he probado todavía, pero lo más probable es que se adhieren a XSLT para hacer el formateo para mi.
Esto es grande ordenar atributos xml, ¿cómo puedo también ordenar childs de una etiqueta? – Natim
Estaba buscando una utilidad similar y realmente no encontré lo que estaba buscando, así que apenas escribí uno. Es muy simple (y no incluye atributos en la ordenación de nodos), pero funciona.
Tal vez sea útil para otros .. Está en GitHub.
Aquí hay un poco de la página de GitHub ...
USAGE: sortxml.exe [options] infile [outfile]
infile The name of the file to sort, etc.
outfile The name of the file to save the output to.
If this is omitted, then the output is written to stdout.
OPTIONS:
--pretty Ignores the input formatting and makes the output look nice.
--sort Sort both the nodes and attributes.
--sortnode Sort the nodes.
--sortattr Sort the attributes.
(prefix an option with ! to turn it off.)
El valor por defecto es a la salida de los nodos y atributos bonita y ordenados. He aquí un ejemplo:
> type sample.xml
<?xml version="1.0" encoding="utf-8" ?><root><node value="one" attr="name"/></root>
> sortxml.exe sample.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<node attr="name" value="one" />
</root>
me gusta esta herramienta: https://xmlsorter.codeplex.com/
Usted puede ordenar por nombre de etiqueta y atributos. Me gusta usarlo antes de comparar algunos archivos XML.
Esto ni siquiera cargaría el archivo XML. Obtuvo un error de "XML no válido". No se pudo manejar la etiqueta doctype. Una vez removido, funcionó. – ScrappyDev
Esto funcionó para mí para una prueba rápida de un par de archivos con más de 7K líneas y una estructura semi-compleja xml, por lo que estoy inicialmente impresionado. Sin errores en absoluto. Una descarga, lanzamiento y ejecución sin complicaciones. Una cosa a tener en cuenta es que permite "ordenar atributos" y "ordenar atributos específicos" y donde luego elige los que desea. Puede marcar ambas opciones que parecen superpuestas. –
Es "Ordenar atributos" y "Ordenar * por * atributos específicos", muy diferente. El primero ordena los atributos para cada línea, el segundo ordena todas las líneas por el contenido de un atributo específico. El último es muy práctico, creo. – Gertsen
De la frustración con Visual Studio que parece reordenar & reescritura EDMX-archivos (Entity Framework) todo el tiempo (véase también este Uservoice), escribí algunos LINQPad-código para cambiar el orden de las cosas. Sin embargo, es fácil (y obvio) usar fuera de LinqPad.
Ordena los elementos por elemento-tipo (etiqueta), luego por el valor del atributo-elemento "Nombre", y luego por otras cosas para tratar de hacerlo más o menos determinista (xml diferente, pero el mismo significado , es [generalmente] la misma salida - vea el código).
También ordena los atributos. Tenga en cuenta que semánticamente XML-atributos pueden tener ningún orden (relevante), pero textualmente que hacen, y los sistemas de control de versiones todavía los consideran texto plano ...
(Tenga en cuenta que no fija los diferentes alias, mencionamos en Entity Framework edmx file regenerating differently amongst team)
void Main()
{
XDocument xdoc = XDocument.Load(@"\\filepath1\file1.edmx");
var orderedElements = CopyAndSortElements(xdoc.Elements());
var newDoc = new XDocument();
newDoc.Add(orderedElements);
newDoc.Save(@"\\filepath1\file1.Ordered.edmx");
}
public IEnumerable<XElement> CopyAndSortElements(IEnumerable<XElement> elements)
{
var newElements = new List<XElement>();
// Sort XElements by Tag & name-attribute (and some other properties)
var orderedElements = elements.OrderBy(elem => elem.Name.LocalName) // element-tag
.ThenByDescending(elem => elem.Attributes("Name").Count()) // can be 0, more than 1 is invalid XML
.ThenBy(elem => (elem.Attributes("Name").Any() ? elem.Attributes("Name").First().Value.ToString() : string.Empty))
// in case of no Name-Attributes, try to sort by (number of) children
.ThenBy(elem => elem.Elements().Count())
.ThenBy(elem => elem.Attributes().Count())
// next line may vary for textually different but semantically equal input when elem & attr were unordered on input, but I need to restrain myself...
.ThenBy(elem => elem.ToString());
foreach (var oldElement in orderedElements)
{
var newElement = new XElement(oldElement.Name);
var orderedAttrs = oldElement.Attributes().OrderBy(attr => attr.Name.LocalName).ThenBy(attr => attr.Value.ToString());
newElement.Add(orderedAttrs);
newElement.Add(CopyAndSortElements(oldElement.Elements()));
newElements.Add(newElement);
}
return newElements;
}
PS: terminamos con un XSLT, que alguien más escribió al mismo tiempo. Creo que encajaba mejor/mejor en el proceso de construcción de todos. Pero quizás/ojalá esto sea de alguna utilidad para alguien.
¿Qué xslt terminaste usando? –
uh, mira esto - quita los valores de los nodos como '
Me encontré con este post cuando intentaba averiguar cómo ordenar y editar el archivo edmx. Mi solución fue basado en la solución de Arvo Bowens encontró https://stackoverflow.com/a/19324438/212241
void Main()
{
XDocument xdoc = XDocument.Load(@"C:\git\Nvision\Source\NvisionEntities\NvisionModel.edmx");
Sort(xdoc.Root);
xdoc.Save(@"C:\git\Nvision\Source\NvisionEntities\NvisionModel.edmx");
}
public void Sort(XElement source, bool bSortAttributes = true)
{
//Make sure there is a valid source
if (source == null) throw new ArgumentNullException("source");
//Sort attributes if needed
if (bSortAttributes)
{
List<XAttribute> sortedAttributes = source.Attributes().OrderBy(a => a.ToString()).ToList();
sortedAttributes.ForEach(a => a.Remove());
sortedAttributes.ForEach(a => source.Add(a));
}
//Sort the children IF any exist
List<XElement> sortedChildren = source.Elements().OrderBy(elem => elem.Attributes("Name").Any() ? elem.Attributes("Name").First().Value.ToString() : string.Empty).ToList();
if (source.HasElements)
{
source.RemoveNodes();
sortedChildren.ForEach(c => Sort(c));
sortedChildren.ForEach(c => source.Add(c));
}
}
- 1. Herramienta de comparación de XML/WSDL
- 2. Herramienta o biblioteca para comparar archivos xml
- 3. Herramienta adecuada para interfaces XML simples
- 4. Herramienta gratuita de formateador de XML (sangrado) en Mac?
- 5. Herramienta para generar gráficos a partir de datos Xml
- 6. Herramienta de Android para generar selector xml para botones
- 7. ¿Hay alguna herramienta para convertir los informes Emma XML al formato XML de Cobertura?
- 8. Herramienta para la validación del esquema XML XSD
- 9. herramienta para generar un archivo xml desde xsd (para probar)
- 10. Herramienta para averiguar XPath
- 11. ASMX servicio web Prueba herramienta
- 12. ¿Alguna herramienta para generar un esquema XSD a partir de un documento de instancia XML?
- 13. Herramienta de documentación de fuente única
- 14. Herramienta/herramienta de análisis de volcado de subprocesos
- 15. ¿Hay alguna herramienta para generar un esquema JSON desde un esquema XML a través de Java?
- 16. Una herramienta de modificación personalizable que puede generar informes (en XML, HTML)
- 17. ¿Existe una herramienta existente para jsonp como la recuperación de xml en jquery?
- 18. ¿Tenemos alguna herramienta para convertir el diseño de Android xml a archivos .java?
- 19. Herramienta para generar secciones de configuración personalizadas
- 20. Herramienta para comparar archivos web.config
- 21. Herramienta alternativa para un tipo de herramienta GhostDoc
- 22. herramienta de regresión CSS?
- 23. Herramienta de análisis SVN
- 24. Herramienta de fusión semántica
- 25. UC_IMAGE_PATH Herramienta de actualización
- 26. Herramienta de depuración StatET
- 27. ¿Hay alguna herramienta de línea de comandos de procesamiento XSLT?
- 28. Cómo comparar archivos XML
- 29. Android y Google App Engine: ¿está disponible la herramienta XML Binding Tool?
- 30. ¿Herramienta simple para aprender XQuery?
duplicado: https://stackoverflow.com/q/9161934/492 .. pero aquí las respuestas eran más útiles para mí –