请帮帮我:如何反序列化这个xml?

时间:2013-11-19 10:06:19

标签: c# xml xsd deserialization

我一周以来一直在研究这个问题:我不知道如何反序列化下面的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。

2 个答案:

答案 0 :(得分:1)

<CRMMessage tag is not closed.

答案 1 :(得分:0)

根元素即CRMMessage节点需要在XML结束时关闭。 只需检查您是否从Web服务获取格式正确的XML。