所以我正在使用Unity开发游戏,我遇到了有关XML的问题。我已经设置了一个系统,这要归功于一个允许我通过从XML数据库中读取数据来创建项目的教程。但是有一个问题。我想设置我的XML文件,如下所示:
<resistance>
<physical>
<phy>60.0</phy>
</physical>
<air>
<air>50.0</air>
</air>
</resistance>
但是,我还没有找到将root设置为检查数据的方法。
XML文件的格式如下:
<Item>
<id>0</id>
<name>Helmet</name>
<resistance>
<physical>
<phy>60.0</phy>
</physical>
<air>
<air>50.5</air>
</air>
</resistance>
</Item>
[XmlArray(“resistance”),XmlArrayItem(“physical”)]只读取部分。我也尝试过如下编写所有内容:
[XmlArray("resistance"), XmlArrayItem("physical"), XmlArrayItem("phy")]
public float[] phyres;
[XmlArray("air"), XmlArrayItem("air")]
public float[] airres;
但是XML文件变得混乱,虽然数据被读取并且我得到了正确的阻力,之后的内容没有被读取,好像阻力成为XML文件的新的永久根。 提前谢谢。
编辑:换句话说,我希望在我的孩子身上有一个子根,并在那里保留一些不同的数组。
编辑:编辑:谢谢jdweng,这最终写得更简单:
[XmlElement("resistance"), XmlArrayItem("physical")]
public float[] phyres;
[XmlElement("air")]
public float[] airres;
但我仍然遇到同样的问题。 root / namespace设置为,之后将从该命名空间读取所有内容。甚至没有影响它。
答案 0 :(得分:0)
在我阅读时,您的要求是resistance
元素,其中包含physical
和air
元素。这样:
[XmlElement("resistance"), XmlArrayItem("physical")]
public float[] phyres;
[XmlElement("air")]
public float[] airers;
不代表那个。它意味着resistance
元素包含多个physical
元素,后跟 air
元素。
这是一个镜像XML的类结构:
public class Item
{
[XmlElement("id")]
public int Id { get; set; }
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("resistance")]
public Resistance Resistance { get; set; }
}
public class Resistance
{
[XmlArray("physical")]
[XmlArrayItem("phy")]
public float[] Phyres { get; set; }
[XmlArray("air")]
[XmlArrayItem("air")]
public float[] Air { get; set; }
}