打开 XML 文件时出错(名称错误异常)
本文关键字:错误 异常 XML 文件 出错 打开 | 更新日期: 2023-09-27 18:29:56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
struct goodatribute
{
public string goodname;
public int goodID;
public int price;
public override string ToString()
{
return "goodname:" + goodname + " goodID:" + goodID + " goodprice:"+price;
}
}
class MyApp
{
static void Main()
{
List<goodatribute> good = new List<goodatribute>();
goodatribute TV = new goodatribute();
TV.goodname = "LG";
TV.goodID = 10;
TV.price = 100;
goodatribute car = new goodatribute();
car.goodname = "Ferrari";
car.goodID = 12;
car.price = 100000;
good.Add(TV);
good.Add(car);
XmlTextWriter writer = null;
writer = new XmlTextWriter("orders.xml", System.Text.Encoding.Unicode);
writer.Formatting = Formatting.Indented;</code>
<code>writer.WriteStartDocument();
writer.WriteStartElement("orders");
for (int i = 0; i < 2; ++i)
{
writer.WriteStartElement("order" + Convert.ToString(i + 1));
writer.WriteStartElement("Name");
writer.WriteElementString("Name", good[i].goodname);
writer.WriteEndElement();
writer.WriteStartElement("ID");
writer.WriteElementString("ID", Convert.ToString(good[i].goodID));
writer.WriteEndElement();
writer.WriteStartElement("Price");
writer.WriteElementString("Good price", Convert.ToString(good[i].price));
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.WriteEndDocument();
writer.Close();
XmlDocument doc = new XmlDocument();
doc.Load("orders.xml");**//the problems start from here**
for (int i = 0; i < 2; ++i)
{
XmlNodeList nodes = doc.GetElementsByTagName("order" + Convert.ToString(i+1));
Console.WriteLine(nodes[i]["Name"].InnerText);
Console.WriteLine(nodes[i]["ID"].InnerText);
Console.WriteLine(nodes[i]["Price"].InnerText);
}
}
}
我在打开 XML 文件时出错。异常描述为:
Message=Знак "0", шестнадцатеричное значение 0x30, не может стоятьв начале имени., строка 3, позиция 10.
问题可能出在节点的名称上吗?XML 文件已成功创建,但无法打开并显示在屏幕上。
应用程序似乎在此语句上失败:
doc.Load("orders.xml");
我做错了什么?你能帮我解决它吗?
XML 名称不能包含空格。当您在语法突出显示器中打开 XML 时,您可以立即看到这一点:good price
节点的price
部分将被解释为good
节点的属性,但它没有相应的值。因此,错误消息解释说它期待=
,而是找到了>
。
若要解决此问题,请将节点名称中的空格替换为连字符或其他有效的 XML 名称字符,如以下示例所示:
writer.WriteElementString("Good-price", Convert.ToString(good[i].price));
writer.WriteElementString("Good_price", Convert.ToString(good[i].price));
writer.WriteElementString("GoodPrice", Convert.ToString(good[i].price));
writer.WriteElementString("Good.Price", Convert.ToString(good[i].price));