在c#中捕获XML中的属性

本文关键字:属性 XML | 更新日期: 2023-09-27 18:16:04

我试图在这个XML中捕获属性"description":

<ProductoModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebApi.Models">
<descripcion>descripcion 1</descripcion>
<fecha_registro>2016-03-01</fecha_registro>
<id_producto>1</id_producto>
<id_proveedor>1</id_proveedor>
<nombre_producto>producto 1</nombre_producto>
<precio>200</precio>
</ProductoModel>

My Code:

    XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(content);
    XmlNamespaceManager manager = new XmlNamespaceManager(xDoc.NameTable);
    manager.AddNamespace("MYNS", "http://schemas.datacontract.org/2004/07/WebApi.Models");
    XmlNode node = xDoc.DocumentElement.SelectSingleNode("MYNS:ProductoModel", manager);
    MessageBox.Show(node.Attributes.GetNamedItem("descripcion").Value);

问题是我不能捕获属性"description"并得到以下错误:

Object reference not set to an instance of an object.

我可以捕获所需的属性吗?

在c#中捕获XML中的属性

<descripcion>不是属性。

您可以通过单个xpath查询获得任何元素(或属性)。

XmlNode node = xDoc.DocumentElement.SelectSingleNode("/MYNS:ProductoModel/MYNS:descripcion", manager);
MessageBox.Show(node.InnerText);

注意xpath表达式开头的字符/

如果您想要另一种操作XML的简单方法,请查看这个。这是一个用于xml操作的小工具,它比XmlNode更容易使用和理解。