打开XML文件时出错(错误名称异常)

时间:2016-01-12 16:48:38

标签: c# xml file

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文件时出错。例外描述是:

  

消息=Знак“0”,шестнадцатеричноезначение0x30,неможетстоятьвначалеимени。,строка3,позиция10。

问题可能在节点名称中吗? XML文件已成功创建,但无法打开并显示在屏幕上。

该声明中的应用程序似乎失败了:

doc.Load("orders.xml");

我做错了什么?你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:4)

XML名称不能包含空格。当您在语法高亮显示器中打开XML时,您可以立即看到这一点:COLUMNS($A:A)节点的price部分将被解释为good price节点的属性,但它没有相应的价值。因此,错误消息说明它期待good,而是找到=

要解决此问题,请使用连字符或其他有效的XML Name字符替换节点名称中的空格,如以下示例所示:

>