打开 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 名称不能包含空格。当您在语法突出显示器中打开 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));