這是我嘗試反序列化的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
感謝您的建議,但它仍然沒有工作。 –