valor obtener nombre nodos nodo leer lectura especifico ejemplos agregar c# linq c#-4.0 xml-parsing linq-to-xml

obtener - Lectura de nodos secundarios de cadena xml usando C#, LINQ



obtener valor de un nodo xml c# (4)

  1. Administrador de espacio de nombres de instalación Tenga en cuenta que la biblioteca .net no es compatible con el espacio de nombres predeterminado, así que agregué el prefijo "ns" al espacio de nombres predeterminado.

  2. use xpath o linq para consultar xml. El siguiente ejemplo usa xpath.

    XmlNamespaceManager NamespaceManager = new XmlNamespaceManager(new NameTable()); NamespaceManager.AddNamespace("base", "http://testserver.windows.net/"); NamespaceManager.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices"); NamespaceManager.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"); NamespaceManager.AddNamespace("ns", "http://www.w3.org/2005/Atom"); XDocument doc = XDocument.Parse(XElement); var properties = doc.XPathSelectElement("/ns:entry/ns:content/m:properties", NamespaceManager);

- <entry xml:base="http://testserver.windows.net/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:etag="W/"datetime''2015-08-30T00%3A04%3A02.9193525Z''""> <id>http://testserver.windows.net/Players(PartitionKey=''zzz'',RowKey=''000125'')</id> <category term="testServer.Players" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <link rel="edit" title="Players" href="Players(PartitionKey=''zzz'',RowKey=''000125'')" /> <title /> <updated>2014-04-30T00:53:42Z</updated> - <author> <name /> </author> - <content type="application/xml"> - <m:properties> <d:PartitionKey>zzz</d:PartitionKey> <d:RowKey>000125</d:RowKey> <d:Timestamp m:type="Edm.DateTime">2014-04-30T00:04:02.9193525Z</d:Timestamp> <d:Name>Black color</d:Name> <d:Comments>Test comments</d:Comments> </m:properties> </content> </entry>

¿Cómo puedo leer descendientes "m: propiedades" usando C # o LINQ? Esta cadena xml se almacena en la variable de tipo XElement


Puede usar la combinación de XNamespace + "element local name" de referencia en el espacio de nombres, por ejemplo:

XElement myxelement = XElement.Parse("your XML string here"); XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; List<XElement> properties = myxelement.Descendants(m+"properties").ToList();


Creo que esto podría mostrarle cómo usar Linq en XML

lea los datos de XML Structure usando c #

Si algo más genera problemas, simplemente depure un poco, vea lo que obtiene de la operación L2X y mueva un árbol de datos paso a paso más profundo.


Usando Linq2XML

var xDoc = XDocument.Load(filename); var dict = xDoc.Descendants("m:properties") .First() .Attributes() .ToDictionary(x => x.Name, x => x.Value);