【问题标题】:How parce a XML DataTable xmlns=“http://schemas.datacontract.org/2004/07/System.Data” to a DataTable in C#?如何在 C# 中将 XML DataTable xmlns="http://schemas.datacontract.org/2004/07/System.Data" 分配给 DataTable?
【发布时间】:2019-08-29 17:19:10
【问题描述】:

我在c # 中使用我的应用程序中的 Web 服务,它返回以下结构:

<DataTable xmlns="http://schemas.datacontract.org/2004/07/System.Data">
    <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
            <xs:complexType>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="Table">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="FUENTE" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="TIPO_DOC" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="NUIP" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="NOM1" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="NOM2" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="APE1" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="APE2" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="DEPTO_EXP" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="MUN_EXP" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="F_EXP" msprop:OraDbType="106" type="xs:dateTime" minOccurs="0"/>
                                <xs:element name="ESTADO_CEDULA" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="NUM_RESOL" msprop:OraDbType="107" type="xs:decimal" minOccurs="0"/>
                                <xs:element name="ANO_RESOL" msprop:OraDbType="107" type="xs:decimal" minOccurs="0"/>
                                <xs:element name="DOCUMENTO_CANCELADO" msprop:OraDbType="107" type="xs:decimal" minOccurs="0"/>
                                <xs:element name="OBSERVACION" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="GENERO" msprop:OraDbType="126" type="xs:string" minOccurs="0"/>
                                <xs:element name="FECHANACIMIENTO" msprop:OraDbType="106" type="xs:dateTime" minOccurs="0"/>
                                <xs:element name="F_CONSULTA" msprop:OraDbType="106" type="xs:dateTime" minOccurs="0"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <NewDataSet xmlns="">
            <Table diffgr:id="Table1" msdata:rowOrder="0">
                <FUENTE>RNEC</FUENTE>
                <TIPO_DOC>CC</TIPO_DOC>
                <NUIP>54778455</NUIP>
                <NOM1>ANGEL</NOM1>
                <NOM2>MIREIDA</NOM2>
                <APE1>RAMOS</APE1>
                <APE2>VALLEJOS</APE2>
                <DEPTO_EXP>PERU</DEPTO_EXP>
                <MUN_EXP>RICAURTE</MUN_EXP>
                <F_EXP>1998-07-22T00:00:00-05:00</F_EXP>
                <ESTADO_CEDULA>VIGENTE</ESTADO_CEDULA>
                <NUM_RESOL>0</NUM_RESOL>
                <ANO_RESOL>0</ANO_RESOL>
                <DOCUMENTO_CANCELADO>0</DOCUMENTO_CANCELADO>
                <GENERO>FEMENINO</GENERO>
                <FECHANACIMIENTO>1978-04-14T00:00:00-05:00</FECHANACIMIENTO>
                <F_CONSULTA>2019-08-29T11:21:03-05:00</F_CONSULTA>
            </Table>
        </NewDataSet>
    </diffgr:diffgram>
</DataTable>

我需要将该答案传递给classDataTable 中的C #,因为我可以将数据保存在变量中,我可以使用它,但我不知道如何转换将XML 转换为我程序中的有效数据类型

如果有帮助,我有这个类可以输入数据:

 class DataResultClass
    {
        string FUENTE { get; set; }
        string TIPO_DOC { get; set; }
        string NUIP { get; set; }
        string NOM1 { get; set; }
        string NOM2 { get; set; }
        string APE1 { get; set; }
        string APE2 { get; set; }
        string DEPTO_EXP { get; set; }
        string MUN_EXP { get; set; }
        string F_EXP { get; set; }
        string ESTADO_CEDULA { get; set; }
        string NUM_RESOL { get; set; }
        string ANO_RESOL { get; set; }
        string DOCUMENTO_CANCELADO { get; set; }
        string GENERO { get; set; }
        string FECHANACIMIENTO { get; set; }
        string F_CONSULTA { get; set; }
    }

要使用该服务,我使用以下内容:

HttpWebRequest request = WebRequest.Create("urlservice.svc") as HttpWebRequest;
request.Method = "GET";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
string resp = reader.ReadToEnd();

【问题讨论】:

    标签: c# xml soap datacontract


    【解决方案1】:

    我通过添加解决了它

    XmlTextReader xmlreader = new XmlTextReader(new System.IO.StringReader(resp));
    DataContractSerializer ser = new DataContractSerializer(typeof(DataTable));
    DataTable datos = (DataTable)ser.ReadObject(xmlreader);
    

    所以最后,我会保持这样的代码:

    HttpWebRequest request = WebRequest.Create("urlservice.svc") as HttpWebRequest;
    request.Method = "GET";
    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string resp = reader.ReadToEnd();
    XmlTextReader xmlreader = new XmlTextReader(new System.IO.StringReader(resp));
    DataContractSerializer ser = new DataContractSerializer(typeof(DataTable));
    DataTable data= (DataTable)ser.ReadObject(xmlreader);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多