Datos personales

Mostrando entradas con la etiqueta XML. Mostrar todas las entradas
Mostrando entradas con la etiqueta XML. Mostrar todas las entradas

viernes, julio 24, 2009

LINQ a XML con namespace

Hoy toca una rápida.

Al intentar consultar un XML generado por la competencia mediante LINQ por el procedimiento tradicional, me ha pasado que no me encontraba nada cuando en los XML generados por nuestra aplicación si me encuentra los elementos que busco mediante la siguiente instrucción:





Revisando el xml que genera la competencia y comparándolo con el nuestro me he dado cuenta que en la cabezar usa el atributo xmlns, es decir, que usa namespace para el nombre de cada elemento:











Así que la cosa cambia, porque un elemento que dependa del raiz DOCS_NOT ya no se llama tal cual lo vemos, se llama por ejemplo , así que la búsqueda mediante linq cambiará a:





es decir, que de alguna manera hay que indicarle el namespace.

Pues nada más, saludos a todos y a divertirse...

Un saludo
Oscar Montesinos.




viernes, septiembre 26, 2008

Serializar PrinterSettings

Siempre que he creado un aplicación me he encontrado con el mismo problema: ¿cómo me guardo los datos de la impresora activa o la impresora por la cual el cliente quiere imprimir, para no tener que pedírselo cada vez que imprimo?

La respuesta es: serializando el objeto printerSettings. Pero ojo, la serialización del objeto printerSettings sólo funciona con Framework 2.0 o superior, aunque no os podría asegurar si en el extraño 3.0 funcionará ya que creo que no es el mismo que del 3.5. Nosotros vamos a hablar de la clase System.Drawing.Printing.PrinterSettings que nos permiten serializar.

Para serializar las características de una impresora tenemos que hacer lo siguiente:

XmlSerializer serializer = new
XmlSerializer(typeof(System.Drawing.Printing.PrinterSettings));
System.IO.TextWriter writer = new System.IO.StringWriter();
//fineprint PDF no deja serializar los datos de impresión, capturamos el error
//para no serializarlo y guardar sólo el nombre o la propiedad que queramos:
try
{
serializer.Serialize(writer, Impresora);
}
catch (Exception ex)
{
writer.Close();
writer = new System.IO.StringWriter();
writer.WriteLine("");
writer.WriteLine(""+Impresora.PrinterName+"");
writer.WriteLine("
");
}
//En writer tenemos serializada la impresora en XML.
Console.WriteLine(writer.ToString());
writer.Close();

Pues ya está serializada y podemos hacer con ella lo que queramos, como por ejemplo guardarlo en una bd o en un fichero de configuración, etc.

Para deserializarla tendremos que hacer este proceso:
XmlSerializer serializer =
new XmlSerializer(typeof(System.Drawing.Printing.PrinterSettings));
System.IO.TextReader sImpresora =
new System.IO.StringReader(MiCadenaXMLGuardada);
System.Drawing.Printing.PrinterSettings printer=
((System.Drawing.Printing.PrinterSettings)serializer.Deserialize(sImpresoa);

Y voilá, con esto os evitaréis tener que crear vuestra propia clase de impresora.

sábado, junio 28, 2008

Crear fichero XML con LINQ

Hola a todos, estoy peleándome estos días con Linq para XML y os publico este mini-artículo para que no tengáis problemas a la hora de crear un fichero XML con Linq. Os preguntareis ahora que para que queremos usar linq si podemos hacerlo con DOM o a mano. En mi caso he preferido usa linq porque vengo del mundo SQL y veo mucho más clara la búsqueda de datos al estilo SQL que montando complejas cadenas con XPath para buscar un dato o 4 datos de un fichero XML. Como lo he visto más fácil así, me he tirado al ruedo y me sale esto:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;


class Program
{

static void Main(string[] args)

{
//Creamos un XDocument.
//Un XDocument contiene el XML completo, y
//le añadimos un nodo raiz, en este caso del de clientes.
XDocument configuracion = new XDocument(
new XDeclaration("1.0", "UTF-8", "yes"),
new XElement("Clientes"));

//Ahora nos situamos en el nodo Clientes
XElement lastAddress =
(configuracion.Descendants("Clientes").Last());

//Añadimos uno nodo nuevo que representa un cliente
XElement nodo = new XElement("Cliente");

//Lo identificamos por su codigo de cliente
XElement elemento = new XElement("Cod001");
//y le añadimos un par de atributos
elemento.SetAttributeValue("Nif", "B12345678");
elemento.SetAttributeValue("Nombre", "Neumáticos SV S.L.");
nodo.Add(elemento);

//Lo añadimos al nodo principal de clientes

lastAddress.Add(nodo);

//Repetimos el proceso para otro cliente.

nodo = new XElement("Cliente");
elemento = new XElement("Cod002");
elemento.SetAttributeValue("Nif", "A1234568");
elemento.SetAttributeValue("Nombre", "Coches Noaveriados S.A.");
nodo.Add(elemento);
lastAddress.Add(nodo);

//Guardamos el fichero xml.

configuracion.Save("C:\\Clientes.XML");

}


}

Etiquetas

.net (1) ALGORITMO (4) algoritmos (1) Android (1) angular (2) aplicaciones WEB (1) ARGENTINA (1) ASP (4) asp .NET (1) ASP .NET Identity (1) attach (1) Azure (1) base de datos (1) BINDING (1) BioInformática (2) bootstrap (1) C (2) C# (27) castellano (1) catalán (1) Charla (1) CheckedListBox (1) Clase (1) clausura transitiva (2) CLIENTES (1) Closing (1) Combobox (1) Comisiones (1) CONCURSO (1) condones (1) consultas (1) corrupta (1) CORS OWIN (1) CORS WEB API 2 (1) Criptografía (1) CUENTA NARANJA (1) Custom Control (1) Daniel Seara (1) DATAGRIDVIEW (1) David Salgado (2) dendrograma (6) depurar (1) desarrollo (1) Deserializar (1) DEVCAMP (2) durex (1) e-DNI (1) el Guille (2) Eladio Rincón (1) elGamal (1) encriptación (1) encuesta (1) Entidad (1) ERROR (2) error 3624 (1) España (1) España es nido de víboras. (1) Euclides (1) Euclides extendido (1) evento (1) eventos. (1) factorización (1) factorizar (1) física (1) Framework 2.0 (1) Framework 3.5 (5) Framework 4 (2) Francisco González (1) Francisco Ruiz (1) GO (1) google (1) gossip (1) Grupos de usuarios (1) Guadalajara (1) Guille Comunity Tour (2) Gusenet (9) GUSENET. (1) Huelga informáticos (1) IBEX 35 (1) Idioma (1) IFT (1) IISExpress (1) Indice de Fuerza Tecnica (1) informática (1) Informix (1) ING DIRECT (1) INGDIRECT (1) Ingeniería Informática (2) Inteligencia artificial (5) Intro (1) IOS (1) IPad (1) IPhone (1) IV Aniversario (1) JavaScript (2) JPA (2) keybd_event (1) LA CAIXA (1) La Pineda (1) ladroentidad (1) Lector RSS (2) LINQ (5) LINQ2XML (1) ListBox (1) Live Distributed Objects (1) llenar (1) LOG (1) Madrid .NET (1) MainMenu (1) MAP (1) MAP 2011 (1) MAR DEL PLATA (1) matemáticas (1) Matriculación (1) MDIList (1) MdiWindowsListItem (1) MenuItem (1) MenuStrip (1) Microsoft (18) Microsoft Active Professional (1) Miguel Egea (2) MSDE 2 (1) MSDE 2000 (1) MVVM Light (2) mysql (1) NAMESPACE (1) Needleman (2) NET (1) NS (1) Oferta empleo (1) Office 14 (1) Office 2007 (1) Office 2009 (1) ON ERROR (1) OOB (1) Oscar Montesinos (1) OWIN (1) OWIN Security middleware (1) Paginación (1) PDC (1) Pedro Hurtado (1) PINTARTECA (1) PrinterSettings (1) Process (1) ProcessStartInfo (1) Programador (1) Relacional (1) robo (1) RSS (1) Rubén Garrigós (1) Salvador Ramos (1) Santa Pola (1) scrape (1) scraping (1) ScrollBar (1) Secretaría (1) SendInput (1) SENDKEYS (1) Sergio Vázquez (1) Serializar (1) Silverlight 2.0 (2) Silverlight 4 (1) Silverlight 5 (3) Silverlight. (1) Sindicado (1) Sistema Personal de Trading (3) Sistemas Distribuidos (1) SOLID SUMMIT 2009 (1) SPT (2) SQL Server (3) SQL Server 2000 (2) SQL Server 2005 (2) SQL Server 2008 (3) SQL Server Denali (1) SQL Server Information Services. (1) SQLU (1) SSIS (1) SUMMIT SQL (1) Suspect (1) Syndication (1) TAB (1) Tablas (1) Tarragona (1) Token bearer (1) ToolStripMenuItem (1) ToString() (1) Traductor (1) transacciones (1) treeview (1) truco (1) TRY CATCH (1) UCI (1) Unience (2) Universad (1) Universidad Oberta Catalunya (2) UOC (8) Usuarios. (1) VB (1) VB6 (1) VB9 (1) VIAJAR (1) Vila-seca (1) VISUAL BASIC (3) Visual Basic. (1) visual studio (1) Visual Studio 2005 (1) Visual Studio 2008 (16) Visual Studio 2010 (2) Visual Studio 2013 (1) VS2010 (1) VSTA (1) VSTO (1) WCF (1) WEB API (1) web.config (1) WebClient (1) WF (1) windows (1) Windows 7 (3) Windows 8 (2) Windows Azure (1) Windows pone (1) Windows Server 2008 (1) Windows Vista (1) woff (1) WP7 (1) WPF (1) Wunsch (2) XAML (4) XDocument (1) XElement (1) XML (3) XNA (1) Yield (2)