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");
我做错了什么?你能帮我解决一下吗?
答案 0 :(得分:4)
XML名称不能包含空格。当您在语法高亮显示器中打开XML时,您可以立即看到这一点:COLUMNS($A:A)
节点的price
部分将被解释为good price
节点的属性,但它没有相应的价值。因此,错误消息说明它期待good
,而是找到=
。
要解决此问题,请使用连字符或其他有效的XML Name字符替换节点名称中的空格,如以下示例所示:
>