Я работаю над проектом, который все еще использует язык Visual FoxPro для манипулирования данными в некоторых случаях.Мы использовали для преобразования DataTables в RecordSet в обоих направлениях.Но из-за необходимых изменений возникли новые требования.Итак, теперь я пытаюсь найти какое-то новое решение, как перенести XML в RecordSet и наоборот?
Я все еще младший разработчик, когда дело доходит до C # и asp.net.
Я нашел так много возможных решений, написанных на старых платформах или на VB, но ничего не работает.Вот небольшой пример, который я не могу реализовать в C # с новейшими фреймворками и базовой технологией.
/// <summary>
/// Convert XML to recordset
/// </summary>
/// <param name="sXML"></param>
/// <returns>Recordset</returns>
public static Recordset recordsetFromXML(string sXML)
{
if (string.IsNullOrEmpty(sXML))
{
// Nothing to convert
return null;
}
// Open an ADO Stream
var oStream = new Stream();
oStream.Open(Missing.Value, ConnectModeEnum.adModeUnknown,
StreamOpenOptionsEnum.adOpenStreamUnspecified,
"", "");
// Load the XML string into stream
oStream.WriteText(sXML, StreamWriteEnum.adWriteChar);
oStream.Position = 0;
// Create empty recordset
var oRecordset = new Recordset();
// Read the XML stream
oRecordset.Open(oStream, Missing.Value,
CursorTypeEnum.adOpenUnspecified,
LockTypeEnum.adLockUnspecified, 0);
oStream.Close();
//Return the recordset
return oRecordset;
}
/// <summary>
/// Convert recordset to XML
/// </summary>
/// <param name="oRecordset"></param>
/// <returns>String</returns>
public static string recordsetToXML(Recordset oRecordset)
{
string xmlString = "";
if (oRecordset != null)
{
// Load recordset into stream
var oStream = new Stream();
oRecordset.Save(oStream, PersistFormatEnum.adPersistXML);
// Get the XML
xmlString = oStream.ReadText(oStream.Size);
}
return xmlString;
}
Как мне перевести этот код?
РЕДАКТИРОВАТЬ: Добавлен простой пример XML.
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="report">
<xs:complexType>
<xs:sequence>
<xs:element name="broj" type="xs:string" minOccurs="0" />
<xs:element name="ugo_id" type="xs:string" minOccurs="0" />
<xs:element name="osi_id" type="xs:string" minOccurs="0" />
<xs:element name="poc_dat" type="xs:dateTime" minOccurs="0" />
<xs:element name="ist_dat" type="xs:dateTime" minOccurs="0" />
<xs:element name="ASSIST_CARD" type="xs:string" minOccurs="0" />
<xs:element name="iznos" type="xs:decimal" minOccurs="0" />
<xs:element name="ID_STATUST" type="xs:string" minOccurs="0" />
<xs:element name="VRSTA" type="xs:string" minOccurs="0" />
<xs:element name="marka" type="xs:string" minOccurs="0" />
<xs:element name="tipmodel" type="xs:string" minOccurs="0" />
<xs:element name="REG_OZN" type="xs:string" minOccurs="0" />
<xs:element name="BR_SASIJE" type="xs:string" minOccurs="0" />
<xs:element name="iznos1" type="xs:decimal" minOccurs="0" />
<xs:element name="stat_id" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="zaglavlje">
<xs:complexType>
<xs:sequence>
<xs:element name="zagl_izv1" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv2" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv3" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv4" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv5" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv6" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv7" type="xs:string" minOccurs="0" />
<xs:element name="zagl_izv8" type="xs:string" minOccurs="0" />
<xs:element name="naslov_izv" type="xs:string" minOccurs="0" />
<xs:element name="podnaslov_izv" type="xs:string" minOccurs="0" />
<xs:element name="qser_no" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<report>
<broj>18-0000001-01</broj>
<ugo_id>5000000000011</ugo_id>
<osi_id>5000000000011</osi_id>
<poc_dat>2017-06-08T00:00:00+02:00</poc_dat>
<ist_dat>2018-06-08T00:00:00+02:00</ist_dat>
<ASSIST_CARD>1234567890</ASSIST_CARD>
<iznos>88.50</iznos>
<ID_STATUST xml:space="preserve"></ID_STATUST>
<VRSTA>01</VRSTA>
<marka>KIA</marka>
<tipmodel>PRIDE</tipmodel>
<REG_OZN>RI555RT </REG_OZN>
<BR_SASIJE>5454564564564</BR_SASIJE>
<iznos1>88.50</iznos1>
<stat_id>18040101</stat_id>
</report>
<zaglavlje>
<zagl_izv1>MORE OSIGURANJE D.D.</zagl_izv1>
<zagl_izv2>Petra Jurčića 16</zagl_izv2>
<zagl_izv3>88000 MOSTAR</zagl_izv3>
<zagl_izv4 />
<zagl_izv5>SARAJEVO, 03.04.2019</zagl_izv5>
<zagl_izv6 />
<zagl_izv7 />
<zagl_izv8 />
<naslov_izv>Pregled CA polica u razdoblju: 01.03.2000 - 01.04.2020</naslov_izv>
<podnaslov_izv />
<qser_no>CUBIS REPORT 200021-857740081</qser_no>
</zaglavlje>
</NewDataSet>