将xml字符串作为参数转换为使用streamReader等效的类
问题描述:
我想使用StreamReader的等价物读取/序列化xml(不是从文件中检索,而是作为字符串中的参数传递)。将xml字符串作为参数转换为使用streamReader等效的类
这里是我的类:
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)在返回之前。
非常感谢提前!
答
[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));
}
希望这有助于。
这是什么意思“返回之前”? – Vecchiasignora
在我的方法(SerializeXMLString)中,我需要将xmlstring转换为我的类(FH)。这需要在方法返回FH之前完成。 – AMorrisey
什么是你的问题?在这部分? xmloutput =(FH)serializer.Deserialize(reader); reader.Close(); return xmloutput; – Vecchiasignora