我在我的应用程序中添加了DataTable
被转换为XML
的功能,如下所示:
dtResults.WriteXml(fileName);
在输出的XML文档中添加 _x0020_
而不是空格。
是否可以在没有_x0020_
代码的情况下生成XML文件?即可以使用该方法或类似方法生成XML文件,并实际保留空间?
这是DataGrid:
这是生成的XML:
<Customers>
<Customer_x0020_Name>Sean</Customer_x0020_Name>
</Customers>
<Customers>
<Customer_x0020_Name>John</Customer_x0020_Name>
</Customers>
<Customers>
<Customer_x0020_Name>Sarah</Customer_x0020_Name>
</Customers>
<Customers>
<Customer_x0020_Name>Mark</Customer_x0020_Name>
</Customers>
<Customers>
<Customer_x0020_Name>Norman</Customer_x0020_Name>
</Customers>
答案 0 :(得分:6)
列的名称包含空格。 XML元素名称不能包含空格。 XML中使用空格将元素名称与属性名称分隔开来,例如:
<ElementName Attribute1="value" />
DataTable.WriteXml
方法尝试以一致的方式写出XML文件,以便稍后可以使用另一个DataTable
对象加载XML并尽可能接近原始的精确副本可能。因此,它用十六进制值替换非法字符,以便非法字符在翻译时不会丢失。
因此,如果您想以不同的方式将其写入XML,则需要:
DataTable
中列的名称,使其不包含空格XDocument
,XmlDocument
,XmlWriter
或XmlSerializer
自行手动输出XML并根据需要格式化输出答案 1 :(得分:2)
我不认为你想要的是可能的。我不相信XML元素名称可以包含空格,就像变量名称不能包含空格一样。它需要成为一个空间的原因是什么?
如果确实需要一个空格(我认为它会使xml无法解析),你只需在文件中进行查找和替换即可。
如果您要将其存储为读回并再次显示在DataTable中,我只需在重新读取数据后重命名列,用空格替换_x0020_
。
答案 2 :(得分:0)
我也面临同样的问题。我从excel文件导出数据,该文件包含空格列。所以我的列也包含空格。 所以我尝试了以下方式。
StringWriter strXML = new StringWriter();
dtPartOriginalData.WriteXml(strXML, XmlWriteMode.IgnoreSchema, false);
strMessages = strXML.ToString().Replace("_x0020_", "");
这将替换_x0020_
并生成xml。但是你不能使用这个xml构造相同的数据表。它是一个解决方法,我想添加它作为一个建议。谢谢。