将XDocument转换为字符串,然后反序列化为类对象

时间:2019-06-14 08:16:53

标签: c# xml serialization deserialization

我正在用C#编写一个方法,该方法从Web服务获取xml,并包含大量不需要的数据。通过此命令,我设法只选择了需要的标签: var exchangeRateDataSet = xmlNew.Descendants("ExchangeRateDataSet");

现在我需要将其转换为字符串,以便可以反序列化并将其转换为类的对象。

但是,有一个问题。当我尝试这样做时: var toRead = exchangeRateDataSet.ToString();

我将其作为字符串获取,这当然是无效的: System.Xml.Linq.XContainer + d__39

这是我拥有的一部分xml:

``
<?xml version="1.0"?>
<ExchangeRateDataSet xmlns="">
<ExchangeRate xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" msdata:rowOrder="0" diffgr:id="ExchangeRate1">
<ExchangeRateListNumber>111</ExchangeRateListNumber>
<Date>14.06.2019</Date>
<CreateDate>14.06.2019</CreateDate>
<DateTo>31.12.4172</DateTo>
<ExchangeRateListTypeID>1</ExchangeRateListTypeID>
<CurrencyGroupID>2</CurrencyGroupID>
<CurrencyCode>978</CurrencyCode>
<CurrencyCodeNumChar>978</CurrencyCodeNumChar>
<CurrencyCodeAlfaChar>EUR</CurrencyCodeAlfaChar>
<CurrencyNameSerCyrl>Евро</CurrencyNameSerCyrl>
<CurrencyNameSerLat>Evro</CurrencyNameSerLat>
<CurrencyNameEng>Euro</CurrencyNameEng>
<CountryNameSerCyrl>ЕМУ</CountryNameSerCyrl>
<CountryNameSerLat>EMU</CountryNameSerLat>
<CountryNameEng>EMU</CountryNameEng>
<Unit>1</Unit>
<BuyingRate>117.6265</BuyingRate>
<MiddleRate>0.0000</MiddleRate>
<SellingRate>118.3343</SellingRate>
<FixingRate>0.000000</FixingRate>
</ExchangeRate>
<ExchangeRate xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" msdata:rowOrder="1" diffgr:id="ExchangeRate2">
<ExchangeRateListNumber>111</ExchangeRateListNumber>
<Date>14.06.2019</Date>
<CreateDate>14.06.2019</CreateDate>
<DateTo>31.12.4172</DateTo>
<ExchangeRateListTypeID>1</ExchangeRateListTypeID>
<CurrencyGroupID>3</CurrencyGroupID>
<CurrencyCode>36</CurrencyCode>
<CurrencyCodeNumChar>036</CurrencyCodeNumChar>
<CurrencyCodeAlfaChar>AUD</CurrencyCodeAlfaChar>
<CurrencyNameSerCyrl>Аустралијски долар</CurrencyNameSerCyrl>
<CurrencyNameSerLat>Australijski dolar</CurrencyNameSerLat>
<CurrencyNameEng>Australian Dollar</CurrencyNameEng>
<CountryNameSerCyrl>Аустралија</CountryNameSerCyrl>
<CountryNameSerLat>Australija</CountryNameSerLat>
<CountryNameEng>Australia</CountryNameEng>
<Unit>1</Unit>
<BuyingRate>71.9868</BuyingRate>
<MiddleRate>0.0000</MiddleRate>
<SellingRate>72.4200</SellingRate>
<FixingRate>0.000000</FixingRate>
</ExchangeRate>
``

`` <?xml version="1.0"?> <ExchangeRateDataSet xmlns=""> <ExchangeRate xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" msdata:rowOrder="0" diffgr:id="ExchangeRate1"> <ExchangeRateListNumber>111</ExchangeRateListNumber> <Date>14.06.2019</Date> <CreateDate>14.06.2019</CreateDate> <DateTo>31.12.4172</DateTo> <ExchangeRateListTypeID>1</ExchangeRateListTypeID> <CurrencyGroupID>2</CurrencyGroupID> <CurrencyCode>978</CurrencyCode> <CurrencyCodeNumChar>978</CurrencyCodeNumChar> <CurrencyCodeAlfaChar>EUR</CurrencyCodeAlfaChar> <CurrencyNameSerCyrl>Евро</CurrencyNameSerCyrl> <CurrencyNameSerLat>Evro</CurrencyNameSerLat> <CurrencyNameEng>Euro</CurrencyNameEng> <CountryNameSerCyrl>ЕМУ</CountryNameSerCyrl> <CountryNameSerLat>EMU</CountryNameSerLat> <CountryNameEng>EMU</CountryNameEng> <Unit>1</Unit> <BuyingRate>117.6265</BuyingRate> <MiddleRate>0.0000</MiddleRate> <SellingRate>118.3343</SellingRate> <FixingRate>0.000000</FixingRate> </ExchangeRate> <ExchangeRate xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" msdata:rowOrder="1" diffgr:id="ExchangeRate2"> <ExchangeRateListNumber>111</ExchangeRateListNumber> <Date>14.06.2019</Date> <CreateDate>14.06.2019</CreateDate> <DateTo>31.12.4172</DateTo> <ExchangeRateListTypeID>1</ExchangeRateListTypeID> <CurrencyGroupID>3</CurrencyGroupID> <CurrencyCode>36</CurrencyCode> <CurrencyCodeNumChar>036</CurrencyCodeNumChar> <CurrencyCodeAlfaChar>AUD</CurrencyCodeAlfaChar> <CurrencyNameSerCyrl>Аустралијски долар</CurrencyNameSerCyrl> <CurrencyNameSerLat>Australijski dolar</CurrencyNameSerLat> <CurrencyNameEng>Australian Dollar</CurrencyNameEng> <CountryNameSerCyrl>Аустралија</CountryNameSerCyrl> <CountryNameSerLat>Australija</CountryNameSerLat> <CountryNameEng>Australia</CountryNameEng> <Unit>1</Unit> <BuyingRate>71.9868</BuyingRate> <MiddleRate>0.0000</MiddleRate> <SellingRate>72.4200</SellingRate> <FixingRate>0.000000</FixingRate> </ExchangeRate> ``

总而言之,我的问题是如何将此xml转换为对象? 任何帮助,将不胜感激。谢谢。

0 个答案:

没有答案