texto seleccion que para palabras multiple lista illustrator etiquetas comandos codigos codigo buscar xml delphi search replace tags

xml - seleccion - que comandos de html en dreamweaver



¿Cómo buscar y reemplazar un valor de etiqueta en un archivo xml usando Delphi? (2)

¿Cómo buscar y reemplazar un valor de etiqueta en un archivo XML usando Delphi?

Sé lo que es la etiqueta XML, pero el valor es aleatorio y simplemente debe restablecerse a un valor predeterminado, por lo que en realidad no puedo / no debo buscar el valor sino solo la etiqueta. También sé la ubicación del archivo / archivos.

Soy nuevo en Delphi, ¿alguien puede darme un ejemplo simple de cómo se puede hacer esto?

Gracias de antemano.


La mejor posibilidad es usar un analizador XML , por ejemplo:

Si se trata de un archivo XML bastante pequeño, también podría simplemente cargar el XML en una cadena (lista) y usar una expresión regular :

var Regex: TPerlRegEx; Regex := TPerlRegEx.Create(nil); Regex.RegEx := ''<yourtag>.*?</yourtag>''; Result := objRegEx.Replace(inputString, replacementString, true);

Puede obtener el componente TPerlRegex aquí .

La tercera forma incluiría hacer todo el trabajo sucio a mano , usando pos , delete e insert . Tendría que encontrar las dos posiciones de la etiqueta de apertura y finalización y la posición de> para la etiqueta de apertura), eliminar la cadena entre esos dos índices e insertar su valor predeterminado después (y debería iterar sobre todas las coincidencias si hay más de una ocurrencia). No de la manera que preferiría ;-)


IXMLDocument el archivo XML usando IXMLDocument de IXMLDocument y usaría el documento para reemplazar el elemento. Algo como esto:

uses XMLDoc, XMLIntf; procedure ChangeTag(const filename : String); var doc : IXMLDocument; parent : IXMLNode; toReplace : IXMLNode; replacement : IXMLNode; begin doc := LoadXMLDocument(filename); parent := doc.DocumentElement.ChildNodes.FindNode(''parent''); toReplace := parent.ChildNodes.FindNode(''toReplace''); replacement := doc.CreateElement(''replacement'', ''''); replacement.Text := toReplace.Text; parent.ChildNodes.ReplaceNode(toReplace, replacement); doc.SaveToFile(filename); end;