我一周以来一直在研究这个问题:我不知道如何反序列化下面的XML。 我从Web服务收到xml。 xml始终包含一行且只有一行(结果)。
我使用xsd工具(在VisualStudio 2008中)创建XSD然后创建.cs类,但是当我这样做时:
// language: c#
XmlSerializer ser = new XmlSerializer(typeof(NewDataSet));
NewDataSet crm;
using (XmlReader reader = XmlReader.Create(retXmlStream))
{
crm = (NewDataSet)ser.Deserialize(reader);
}
我总是收到“XML文档中的错误(2,2)”
这是从Web服务返回的XML:
<?xml version="1.0" encoding="UTF-8"?>
<CRMMessage language="en_US" currency="USD" isTrustedSAT="false" hostversion="1.00">
<RequestCode>GetCustomer</RequestCode>
<ResponseCode>A</ResponseCode>
<ResultSet>
<ResultSetMetaData>
<RSColumn name="PRIMARYPOSREF" type="string" nullable="true"></RSColumn>
<RSColumn name="ACTIVE" type="boolean" nullable="false"></RSColumn>
<RSColumn name="firstName" type="string" nullable="true"></RSColumn>
<RSColumn name="LastName" type="string" nullable="true"></RSColumn>
<RSColumn name="postalCode" type="string" nullable="true"></RSColumn>
<RSColumn name="city" type="string" nullable="true"></RSColumn>
<RSColumn name="county" type="string" nullable="true"></RSColumn>
<RSColumn name="addressline1" type="string" nullable="true"></RSColumn>
<RSColumn name="addressline2" type="string" nullable="true"></RSColumn>
<RSColumn name="organizationname" type="string" nullable="true"></RSColumn>
</ResultSetMetaData>
<Rows>
<Row id="168209">
<Col>168209</Col>
<Col>1</Col>
<Col>John</Col>
<Col>Doe</Col>
<Col>12345</Col>
<Col>ROME</Col>
<Col>RM</Col>
<Col>Via Verdi 1</Col>
<Col>Secondo Piano</Col>
<Col>ACME Ltd</Col>
</Row>
</Rows>
</ResultSet>
</CRMMessage>
感谢所有人的宝贵帮助。 的Davide。
答案 0 :(得分:1)
<CRMMessage tag is not closed.
答案 1 :(得分:0)
根元素即CRMMessage节点需要在XML结束时关闭。 只需检查您是否从Web服务获取格式正确的XML。