我有一个包含5个项目的列表myListOfItems。我想要做的就是创建一个xml,其中所有项目都显示如下:
<something>
<someValue/>
</something>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<somethingElse>
<someValue/>
</somethingElse>
到目前为止,我有这个:
<something>
<someValue/>
</something>
<myListOfItems>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
<item>...</item>
</myListOfItems>
<somethingElse>
<someValue />
</somethingElse>
这就是我的方式:
[System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true, Order=34)]
[System.Xml.Serialization.XmlArrayItemAttribute("passengerDetails", IsNullable=false)]
public List<Item> myListOfItems {
get {
return this.myListOfItemsField;
}
set {
this.myListOfItemsField = value;
this.RaisePropertyChanged("myListOfItems");
}
}
如何删除父myListOfItems标记?
编辑: 至于你提到的话题: 如果我将XmlArrayItemAttribute更改为XmlElement,我得到这个
InvalidOperationException:XmlElement,XmlText和XmlAnyElement不能与XmlAttribute,XmlAnyAttribute,XmlArray或XmlArrayItem一起使用。
当我注释掉XmlArrayAttribute部分时,我得到了这个
InvalidOperationException:不一致的排序:如果在类的一个成员上使用,所有类似粒子的成员都需要'Order'属性,请在类成员项上使用XmlElement,XmlAnyElement或XmlArray自定义属性显式设置'Order' ”。
现在我如何设置多个项目的订单?
答案 0 :(得分:0)
您不需要使用序列化。而是使用xml linq:
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
using System.Net;
namespace ConsoleApplication73
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
List<string> items = doc.Descendants("item").Select(x => (string)x).ToList();
}
}
}