我有以下情况:
一个小例子如下:
<garage>
<owner>daniel</owner>
<cars>
<XmlElement>
<plate>ABC123</plate>
</XmlElement>
<XmlElement>
<plate>DSC563</plate>
</XmlElement>
<XmlElement>
<plate>AIO789</plate>
</XmlElement>
<XmlElement>
<plate>IUE692</plate>
</XmlElement>
</cars>
</garage>
我有一个plate
数组,想将它注入到car
的{{1}}上
问题是,我似乎找不到消除包裹对象的System.Xml.XmlElement[]
元素的方法,我只是希望它像:
XmlElement
我尝试使用Xml属性,但无法完全得到我想要的。
有人可以帮我吗?
这是工作代码:
<garage>
<owner>
<name>daniel</name>
</owner>
<cars>
<plate>ABC123</plate>
<plate>DSC563</plate>
<plate>AIO789</plate>
<plate>IUE692</plate>
</cars>
</garage>
答案 0 :(得分:1)
如果使用XElement
而不是XmlElement
,则可以使用XmlAnyElement
属性获得所需的输出:
public class Garage
{
public string owner { get; set; }
[XmlAnyElement]
public XElement[] cars { get; set; }
}
您的方法StringToXmlElement
如下:
public XElement StringToXmlElement(string xml)
{
return XElement.Parse(xml);
}
答案 1 :(得分:0)
一种选择是使用XmlSerializer并具有代表您的xml的类
class Program
{
static void Main(string[] args)
{
XmlSerializer serializer = new XmlSerializer(typeof(Garage));
var garage = new Garage
{
Owner = new Owner { Name = "Daniel" },
Cars = new List<string>
{
"ABC123",
"DSC563",
"AIO789",
"IUE692",
}
};
serializer.Serialize(File.Create("file.xml"), garage);
}
}
[Serializable]
public class Garage
{
[XmlElement("Owner")]
public Owner Owner;
[XmlArrayItem("Plate")]
public List<string> Cars;
}
[Serializable]
public class Owner
{
[XmlElement("Name")]
public string Name;
}