obtener - Lectura de nodos secundarios de cadena xml usando C#, LINQ
obtener valor de un nodo xml c# (4)
- <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
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.
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);
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);