我想使用相当于StreamReader来读取/序列化xml(不是从文件中检索,而是作为字符串中的参数传递)。
这是我的班级:
public class FH
{
public FH();
public bool AllowD { get; set; }
public string C_ID { get; set; }
public string CS_ID { get; set; }
public FileType FT { get; set; }
public int G_CK { get; set; }
public string G_ID { get; set; }
public bool IsR { get; set; }
[DefaultValue(-1)]
public int S_CK { get; set; }
public string S_ID { get; set; }
}
这是我的方法:
public static FH SerializeXMLString (string xmlstring)
{
string path = xmlstring;
FH xmloutput = null;
XmlSerializer serializer = new XmlSerializer(typeof(FH));
StreamReader reader = new StreamReader(path);
xmloutput = (FH)serializer.Deserialize(reader);
reader.Close();
return xmloutput ;
}
xml(字符串)如下:
<FH>
<G_ID>XRY</G_ID>
<G_CK>8</G_CK>
<CS_ID>RR03</CS_ID>
<C_ID>YX</CI_ID>
<AllowD>false</AllowD>
<S_ID>1888655</S_ID>
<S_CK>25650</S_CK>
<FT>
<ID>55</ID>
<Name>MI</Name>
<Purp>Change</Purp>
</FT>
<IsR>true</IsR>
</FH>
我意识到StreamReader将被用于读取文件并期望一个路径,但是想知道是否有一个等价物,我可以用它来获取我的xmlstring并在返回之前转换为我的类(FH)。
非常感谢提前!
答案 0 :(得分:0)
[Serializable]
[XmlType(TypeName = "FH")]
public class FH
{
public string G_ID{ get; set; }
public string G_CK{ get; set; }
public string CS_ID{ get; set; }
public string C_ID{ get; set; }
public bool AllowD{ get; set; }
public string S_ID{ get; set; }
public string S_CK{ get; set; }
public FT FT { get; set; }
public bool IsR{ get; set; }
}
[Serializable]
public class FT
{
public string ID{ get; set; }
public string Name{ get; set; }
public string Purp{ get; set; }
}
首先,您应该使用泛型方法。将xml反序列化到另一个类时你会怎么做?你可以看看这个例子。
var response = XmlSampleHelper.SerializeXMLString<FH>(xmlstring, null);
和通用的SerializeXMLString方法,
public static T SerializeXMLString<T>(string xmlstring, string schemaPath)
{
var serializer = new XmlSerializer(typeof(T));
TextReader reader = new StringReader(xmlstring);
if (!string.IsNullOrWhiteSpace(schemaPath))
ValidateXmlDocument(reader, schemaPath);
return (T)serializer.Deserialize(new StringReader(xmlstring));
}
希望这有帮助。