将 XML 序列化为 CSharp class
Serialize XML into CSharp class
我在 json 数据字段中有一个 xml 字符串。我想提取该值并将其与该字段的数据库值进行比较。
我使用 xsd.exe 为那个 xml 生成了 class(从 here). I am using that class to deserialize the xml response. Then i used the method from here
看到反序列化。
我用过
`XmlSerializer serializer1 = new XmlSerializer(typeof(class_gen_from_xml))
在下面的代码中,我从 json 响应中提取了 xml 源,然后执行如下操作:
string xmlSource = "<ResultSet><Result precision=\"address\"> <Latitude>47.643727</Latitude></Result></ResultSet>";
XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
ResultSet output;
using (StringReader reader = new StringReader(xmlSource))
{
output = (ResultSet)serializer.Deserialize(reader);
}
`
我得到了一个异常,调试没有显示任何内容。我在代码中遗漏了什么吗?
你的 ResultSet
class 可能有问题,这对我来说很好:
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class ResultSet
{
private ResultSetResult[] resultField;
[System.Xml.Serialization.XmlElementAttribute("Result")]
public ResultSetResult[] Result
{
get
{
return this.resultField;
}
set
{
this.resultField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ResultSetResult
{
private decimal latitudeField;
private string precisionField;
public decimal Latitude
{
get
{
return this.latitudeField;
}
set
{
this.latitudeField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string precision
{
get
{
return this.precisionField;
}
set
{
this.precisionField = value;
}
}
}
使用你的反序列化代码:
static void Main(string[] args)
{
string xmlSource = "<ResultSet><Result precision=\"address\"> <Latitude>47.643727</Latitude></Result></ResultSet>";
XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
ResultSet output;
using (StringReader reader = new StringReader(xmlSource))
{
output = (ResultSet)serializer.Deserialize(reader);
}
}
我在 json 数据字段中有一个 xml 字符串。我想提取该值并将其与该字段的数据库值进行比较。
我使用 xsd.exe 为那个 xml 生成了 class(从 here). I am using that class to deserialize the xml response. Then i used the method from here
看到反序列化。
我用过
`XmlSerializer serializer1 = new XmlSerializer(typeof(class_gen_from_xml))
在下面的代码中,我从 json 响应中提取了 xml 源,然后执行如下操作:
string xmlSource = "<ResultSet><Result precision=\"address\"> <Latitude>47.643727</Latitude></Result></ResultSet>";
XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
ResultSet output;
using (StringReader reader = new StringReader(xmlSource))
{
output = (ResultSet)serializer.Deserialize(reader);
}
` 我得到了一个异常,调试没有显示任何内容。我在代码中遗漏了什么吗?
你的 ResultSet
class 可能有问题,这对我来说很好:
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class ResultSet
{
private ResultSetResult[] resultField;
[System.Xml.Serialization.XmlElementAttribute("Result")]
public ResultSetResult[] Result
{
get
{
return this.resultField;
}
set
{
this.resultField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ResultSetResult
{
private decimal latitudeField;
private string precisionField;
public decimal Latitude
{
get
{
return this.latitudeField;
}
set
{
this.latitudeField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public string precision
{
get
{
return this.precisionField;
}
set
{
this.precisionField = value;
}
}
}
使用你的反序列化代码:
static void Main(string[] args)
{
string xmlSource = "<ResultSet><Result precision=\"address\"> <Latitude>47.643727</Latitude></Result></ResultSet>";
XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
ResultSet output;
using (StringReader reader = new StringReader(xmlSource))
{
output = (ResultSet)serializer.Deserialize(reader);
}
}