Ejemplo XML: Almacenar configuración

Indudablemente hay muchas formas de trabajar XML con Delphi. Una que puede resultar muy práctica es el uso de OmniXML, una biblioteca bastante madura y disponible bajo la licencia MPL.

Veremos pues, a manera de ejemplo, como con una sola línea de código podemos guardar la configuración en un archivo XML.

La línea:

  TOmniXMLWriter.SaveToFile(Conf, ConfigFileName, pfNodes, ofIndent);

El resultado:

<data propformat="node">
  <tappconfig>
    <autoupdate>1</autoupdate>
    <autologin>0</autologin>
    <defaultusername>test</defaultusername>
    <defaultpassword>BadChoice</defaultpassword>
    <mainwindow>
      <displaywallpaper>1</displaywallpaper>
      <wallpaperfilename>c:\users\Public\Pictures\Sample Pictures\Forest.jpg</wallpaperfilename>
    </mainwindow>
  </tappconfig>
</data>

Nada mal para una sola línea de código, ¿no?

Bien, el requisito detrás de esta “magia” es que tengamos una clase, derivada de TPersistent donde mantenemos la configuración. El método SaveToFile de TOmniXMLWriter guardará en el XML todas aquellas propiedades publicadas (published). Una ventaja es que este método se encarga también de aquellas propiedades objeto que también deriven de TPersistent.

En el caso de ejemplo, la clase de configuración se ve así:

type
  TMainWindowConfig = class(TPersistent)
  private
    FDisplayWallPaper: Boolean;
    FWallPaperFileName: string;
  public
    procedure Assign(Source: TPersistent); override;
  published
    property DisplayWallPaper: Boolean read FDisplayWallPaper write FDisplayWallPaper;
    property WallPaperFileName: string read FWallPaperFileName write FWallPaperFileName;
  end;

  TAppConfig = class(TPersistent)
  private
    FAutoUpdate: Boolean;
    FMainWindowConfig: TMainWindowConfig;
    FAutoLogin: Boolean;
    FDefaultPassword: string;
    FDefaultUserName: string;
    procedure SetMainWindowConfig(const Value: TMainWindowConfig);
  public
    constructor Create;
  published
    property AutoUpdate: Boolean read FAutoUpdate write FAutoUpdate;
    property AutoLogin: Boolean read FAutoLogin write FAutoLogin;
    property DefaultUserName: string read FDefaultUserName write FDefaultUserName;
    property DefaultPassword: string read FDefaultPassword write FDefaultPassword;
    property MainWindow: TMainWindowConfig read FMainWindowConfig write SetMainWindowConfig;
  end;

Nada mal, eh…

Si te interesa, dejo a tu disposición el Código completo (pdf)

¿por qué el código en PDF?
por favor, se benevol@ y no me maldigas por el formato de archivo, lo elegí porque puedo alojarlo aquí mismo y así no me arriesgo a que luego no esté disponible.

Te recuerdo que en este blog, los comentarios y críticas son siempre bienvenidos😉

5 Respuestas a “Ejemplo XML: Almacenar configuración

  1. Vaya, que bien, ya regresaste al mundo virtual, que bien amigo, un gusto leerte de nuevo.

    Saludos

  2. hola jachguate

    no tendras mas demos de como usar omnixml.

    al xml yo no le hayo,, y me intersa usarlo

    gracias.

    • Ejemplos hay muchos por la red… quizás yo publique algunos mas en el futuro, pero si te sirvan depende de lo que querras lograr y de tu disposición a aprender ensuciándote un poco las manos con el código…🙂

  3. habra muchos pero yo no los encuentro
    si los hubiese encontrado, no hubiesea solicitado
    ejemplos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s