El TecnoBaúl de Kiquenet

Kiquenet boring stories

XmlDocument vs XDocument in C#

Posted by kiquenet en 23 septiembre 2014

Attention:

Ensure Encoding ANSI not UTF-8 (view using Notepad++ option)

Xml Namespace (ns)

Using

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


var xml = @"           
<Project xmlns=""
http://schemas.microsoft.com/developer/msbuild/2003"">
  <PropertyGroup>
    <MfaAvisosComoErrores>False</MfaAvisosComoErrores>
    <MfaEntorno>Desarrollo</MfaEntorno>
  </PropertyGroup>
</Project>";

            var xml2 = @"           
<Project>
  <PropertyGroup>
    <MfaAvisosComoErrores>False</MfaAvisosComoErrores>
    <MfaEntorno>Desarrollo</MfaEntorno>
  </PropertyGroup>
</Project>";

XmlDocument

var xDoc1 = new System.Xml.XmlDocument();
xDoc1.Load(f1);

var nodes = xDoc1.GetElementsByTagName("MfaAvisosComoErrores");
Assert.AreNotEqual(0, nodes.Count);
Assert.AreEqual("False", nodes[0].InnerText, "MfaAvisosComoErrores");

XDocument withouth namespace

var doc2 = XDocument.Parse(xml2);
Assert.AreNotEqual(0, doc2.Descendants("MfaAvisosComoErrores").ToList().Count);

XDocument with namespace

XNamespace ns = http://schemas.microsoft.com/developer/msbuild/2003;
var doc1 = XDocument.Parse(xml);
Assert.AreNotEqual(0, doc1.Descendants(ns + "MfaAvisosComoErrores").ToList().Count);
Assert.AreNotEqual(0, doc1.Root.Descendants(ns + "MfaAvisosComoErrores").ToList().Count);

From file

                        var doc = XDocument.Load(f1);
            Assert.AreEqual(0, doc.Descendants("MfaAvisosComoErrores").ToList().Count);

            var MfaAvisosComoErrores = doc.Element(ns + "Project").Element(ns + "PropertyGroup").Element(ns + "MfaAvisosComoErrores").Value;
            Assert.AreEqual("False", MfaAvisosComoErrores, "MfaAvisosComoErrores");
            var MfaEntorno = doc.Element(ns + "Project").Element(ns + "PropertyGroup").Element(ns + "MfaEntorno").Value;
            Assert.AreEqual("Desarrollo", MfaEntorno, "MfaEntorno");

            var query = from property in doc1.Root.Descendants(ns + "PropertyGroup")
                        let MfaAvisosComoErroresValue = (string)property.Element(ns + "MfaAvisosComoErrores")
                        where MfaAvisosComoErroresValue == "False"
                        select new
                        {
                            MfaAvisosComoErrores = MfaAvisosComoErroresValue,
                        };
            Assert.AreNotEqual(0, query.ToList().Count);

References:
http://stackoverflow.com/questions/3460991/selecting-a-xelement-from-a-xdocument
http://stackoverflow.com/questions/566167/query-an-xdocument-for-elements-by-name-at-any-depth
http://stackoverflow.com/questions/15099197/xdocument-to-list-of-object
http://stackoverflow.com/questions/8460464/finding-element-in-xdocument

Anuncios

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

 
A %d blogueros les gusta esto: