我有一个输入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="Table1">
<xs:complexType>
<xs:sequence>
<xs:element name="MA_ID" type="xs:string" minOccurs="0" />
<xs:element name="MA_CODE" type="xs:short" minOccurs="0" />
<xs:element name="MA_CODE_P" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Table1>
<MA_ID />
<MA_CODE>PA15TX0009707</MA_CODE>
<MA_CODE_P>PA15TX0009707001</MA_CODE_P>
</Table1>
<Table1>
<MA_ID />
<MA_CODE>0</MA_CODE>
<MA_CODE_P>PA15TX0009707001</MA_CODE_P>
</Table1>
<Table1>
<MA_ID />
<MA_CODE>1</MA_CODE>
<MA_CODE_P>PA15TX0009707001</MA_CODE_P>
</Table1>
</NewDataSet>
我将其转换为数据集并将字符串json返回给客户端
DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlPath, XmlReadMode.ReadSchema);
string strJson = JsonConvert.SerializeObject(dataSet, Newtonsoft.Json.Formatting.Indented);
在一些业务(计算和更改数据)之后,客户端返回更改数据的json字符串,我必须将该json转换回xml原始表单。 我使用以下方式转换:
DataSet myDataSet = JsonConvert.DeserializeObject<DataSet>(jsondata);
StringWriter sw = new StringWriter();
myDataSet.WriteXml(sw, XmlWriteMode.WriteSchema);
string result = sw.ToString();
我得到了结果,但所有元素xs:element
都有转换为long的数据类型编号(int,short,decimal ...),例如:
<xs:element name="MA_CODE" type="xs:short" minOccurs="0" />
=== type changed ====> <xs:element name="MA_CODE" type="xs:long" minOccurs="0" />
那么在导出到xml文件时如何保留原始格式?