Datatable.WriteXml - 如何在元素名称中保留空格

Dot*_*NET 1 .net c# xml vb.net xml-parsing

我在我的应用程序中添加了一个DataTable转换成的功能XML,如下所示:

dtResults.WriteXml(fileName);
Run Code Online (Sandbox Code Playgroud)

_x0020_ 在输出的XML文档中添加空格而不是空格.

是否可以在没有_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>
Run Code Online (Sandbox Code Playgroud)

Ste*_*art 7

列的名称包含空格.XML元素名称不能包含空格.XML中使用空格将元素名称与属性名称分隔开,例如:

<ElementName Attribute1="value" />
Run Code Online (Sandbox Code Playgroud)

DataTable.WriteXml方法尝试以一致的方式写出XML文件,以便DataTable稍后可以使用另一个对象来加载XML并尽可能接近原始的精确副本.因此,它用十六进制值替换非法字符,以便非法字符在翻译中不会丢失.

因此,如果要以不同方式将其写入XML,则需要:

  • 更改列中的列名DataTable,使其不包含空格
  • 手动输出XML自己使用XDocument,XmlDocument,XmlWriter,或XmlSerializer,并且按照自己的愿望格式化输出
  • 像现在一样输出XML,然后在其上运行XSLT脚本来修复格式