在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.
我可以捕获所需的属性吗?
<descripcion>
不是属性。
您可以通过单个xpath查询获得任何元素(或属性)。
XmlNode node = xDoc.DocumentElement.SelectSingleNode("/MYNS:ProductoModel/MYNS:descripcion", manager);
MessageBox.Show(node.InnerText);
注意xpath表达式开头的字符/
如果您想要另一种操作XML的简单方法,请查看这个。这是一个用于xml操作的小工具,它比XmlNode更容易使用和理解。