这是我尝试反序列化的XML文件:无法反序列化只有一个节点的XML文件;根节点
<?xml version="1.0" encoding="utf-8"?>
<d:MyItem xmlns:d="http://someurl" xmlns:m="http://someotherurl">This is a string</d:MyItem>
的xsd tool生成以下类:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://someurl")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://someurl", IsNullable=false)]
public partial class MyItem {
private object[] itemsField;
/// <remarks/>
public object[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
}
我目前正试图反序列化相同的XML xsd
用于生成类:
var xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<d:MyItem xmlns:d=\"http://someurl\" xmlns:m=\"http://someotherurl\">This is a string</d:MyItem>";
var deserialized = Deserialize<MyItem>(xml);
其中Deserialize<>
是:
private static T Deserialize<T>(string xml)
{
var xmlDocument = XDocument.Parse(xml);
var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
return (T)serializer.Deserialize(xmlDocument.CreateReader());
}
的问题是,虽然Deserialize
返回一个实例(不为空),它里面的属性Items
是null
即它没有被反序列化。
我怎样才能从这个XML里面得到字符串?
但是是不是有你如何可以序列我张贴的XML的方法吗? –
其实你可以。尝试这样的事情 [XmlRoot(的ElementName = “项目”,数据类型= “字符串”) 公共部分类MyItem { /// 公共字符串项{获取;集;}} –
Eugene
感谢您的建议,但它仍然没有工作。 –