LoadXml添加了额外的空白

本文关键字:空白 添加 LoadXml | 更新日期: 2023-09-27 18:14:51

这就是我的字符串的样子

<?xml version="1.0" encoding="UTF-8"?>
<payment id="123456" date="2013-05-16 11:24:59.0">
  <refund id="1" amount="10000.0" reason="refund 1"/>
  <refund id="2" amount="1200.0" reason="refund 2"/>
  <refund id="3" amount="2252.0" reason="refund 3"/>
</payment>

在我使用以下代码将其转换为xml之后:

XmlDocument xml = new XmlDocument();
xml.LoadXml(myString);

我的xml文档如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<payment id="123456" date="2013-05-16 11:24:59.0">
  <refund id="1" amount="10000.0" reason="refund 1" />
  <refund id="2" amount="1200.0" reason="refund 2" />
  <refund id="3" amount="2252.0" reason="refund 3" />
</payment>

注意到区别了吗?出于某种原因,所有"退款"元素在结束标记之前都有一个额外的空白。有人知道为什么会这样吗?我试图将PreserveWhitespace设置为false,但无济于事。

LoadXml添加了额外的空白

This is because of the inline closing of the XML tag.
    <?xml version="1.0" encoding="UTF-8"?>
    <payment id="123456" date="2013-05-16 11:24:59.0"**>**
      <refund id="1" amount="10000.0" reason="refund 1"**/>**
      <refund id="2" amount="1200.0" reason="refund 2"/>
      <refund id="3" amount="2252.0" reason="refund 3"/>
    </payment>

付款的末尾有一个单独的结束标签,但退款是一个自行结束的元素。默认情况下,将在结束标记之前添加一个空格。如果你不想要间距,那么你必须像那样做

<?xml version="1.0" encoding="UTF-8"?>
        <payment id="123456" date="2013-05-16 11:24:59.0">
          <refund id="1" amount="10000.0" reason="refund 1">**</refund>**
          <refund id="2" amount="1200.0" reason="refund 2"></refund>
          <refund id="3" amount="2252.0" reason="refund 3"></refund>
        </payment>

XmlDoument将XML内容转换为有效标记。也就是说,应该有一个空格(这不是必须的,但它是标准的(。

你可以试着把整个XML放在一行中,我星期五的结果会和这里一样。。