开始练习XML和C#,我有一条错误消息"XML文档中存在错误(3,2)".看完文件后,我看不出有什么问题(请注意,我可能因为我是菜鸟而错过了一些东西).我正在使用C#的控制台应用程序.我正在尝试返回一个冒险家列表,只是一个旁注,GEAR元素是可选的.这是我到目前为止:
XML文件 - Test1
<?xml version="1.0" encoding="utf-8"?>
<Catalog>
<Adventurer>
<ID>001</ID>
<Name>John Smith</Name>
<Address>123 Fake Street</Address>
<Phone>123-456-7890</Phone>
<Gear>
<Attack>
<Item>
<IName>Sword</IName>
<IPrice>15.00</IPrice>
</Item>
<Item>
<IName>Wand</IName>
<IPrice>20.00</IPrice>
</Item>
</Attack>
<Defense>
<Item>
<IName>Shield</IName>
<IPrice>5.00</IPrice>
</Item>
</Defense>
</Gear>
</Adventurer>
<Adventurer>
<ID>002</ID>
<Name>Guy noone likes</Name>
<Address>Some Big House</Address>
<Phone>666-666-6666</Phone>
<Gear></Gear>
</Adventurer>
</Catalog>
Run Code Online (Sandbox Code Playgroud)
C#类
public class Catalog
{
List<Adventurer> Adventurers { get; set; }
}
public class Adventurer
{
public int ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public Gear Gear { get; set; }
}
public class Gear
{
public List<Item> Attack { get; set; }
public List<Item> Defense { get; set; }
}
public class Item
{
public string IName { get; set; }
public decimal IPrice { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
序列化功能 - 第5行出现问题的位置
Catalog obj = null;
string path = @"C:\Users\Blah\Desktop\test1.xml";
XmlSerializer serializer = new XmlSerializer(typeof(Catalog));
StreamReader reader = new StreamReader(path);
obj = (Catalog)serializer.Deserialize(reader);
reader.Close();
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
问题是目录中的冒险家列表:
<?xml version="1.0" encoding="utf-8"?>
<Catalog>
<Adventurers> <!-- you're missing this -->
<Adventurer>
</Adventurer>
...
<Adventurer>
</Adventurer>
</Adventurers> <!-- and missing this -->
</Catalog>
Run Code Online (Sandbox Code Playgroud)
您没有集合的包装元素Adventurers。
编辑:顺便说一句,我发现构建 XML 结构并确保其兼容的最简单方法是在 C# 中创建对象,然后运行内置对象XmlSerializer并使用其 XML 输出作为任何 XML 的基础我创造而不是手工形成它。
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |