我需要获取 XML 文件中节点的值。
我的 XML 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<PRODUCTS>
<IPHONE>
<NAME>iPhone 5s</NAME>
<MODEL>5s</MODEL>
<PRICE>899</PRICE>
<COLOR>Gold</COLOR>
</IPHONE>
我想从文件中获取文本(iPhone 5s)。
我尝试了在互联网上找到的几种方法:
protected void Page_Load(object sender, EventArgs e)
{
String[][] products = new String[3][];
int i = 0;
int j = 0;
System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader("../XML-Test/Webshop-products.xml");
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.LocalName.Equals("NAME"))
{
//Name of product
products[i][j] = reader.ReadInnerXml();
j++;
}
if (reader.LocalName.Equals("MODEL"))
{
//Model
products[i][j] = reader.ReadString();
j++;
}
if (reader.LocalName.Equals("PRICE"))
{
//Price
products[i][j] = reader.Value;
j++;
}
if (reader.LocalName.Equals("COLOR"))
{
//Color
products[i][j] = reader.Value;
j++;
i++;
}
}
}
for (int k = 0; k < products.Length; k++)
{
for (int l = 0; l < products[k].Length; l++)
{
Console.Write(products[k][l]);
}
}
}
似乎没有任何方法有效。当我运行项目(ASP.NET 项目)时,出现以下错误:
System.NullReferenceException:未将对象引用设置为对象的实例
如何获取节点的值?
您可以使用 Linq To Xml。
假设您还有其他产品,例如IPHONE
under PRODUCTS
var products = XDocument.Load(filename).Root
.Elements()
.Select(x => new
{
Product = x.Name.LocalName,
Name = (string)x.Element("NAME"),
Model = (string)x.Element("MODEL"),
Price = (decimal)x.Element("PRICE"),
Color = (string)x.Element("COLOR")
})
.ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)