对于混合文本的xml:
<remark>He is a <match>tall</match> and handsome man</remark>
目前我用VS的XSD工具生成的类,类似:
[System.Xml.Serialization.XmlElementAttribute("match")] public match[] match { get { return this._match; } set { this._match = value; } } /// [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } }
但是反序列化后,我无法准确的知道子节点match和文本的顺序。
参考StackOverflow链接:
http://stackoverflow.com/questions/2648202/xmlserializer-mixed-content-deserialization
请求支援。。。
数组的顺序就是文本的顺序
match在文本的中间,我的意思是,反序列化后,文本数组是【He is a,and handsome man】,我要怎么知道match是在两个数组之间的。
@十分师傅: 这个你确实无法知道,放弃吧!
添加Items对象集合属性,并添加XmlTextAttribute(不使用Text[])后解决:
[System.Xml.Serialization.XmlElementAttribute("match", typeof(match))] [System.Xml.Serialization.XmlTextAttribute(typeof(System.String))] //添加* public object[] Items { get { return this.itemsField; } set { this.itemsField = value; } } /* 不使用 /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } */
添加一个 match 类后,确实有效果。
@Launcher: 折腾了一个上午哎。我都用VS的xsd工具生成的,看来工具生成的代码也不完美。