【问题标题】:C# XmlSerializer trim whitespacesC# XmlSerializer 修剪空格
【发布时间】:2016-07-15 15:14:06
【问题描述】:

在使用 XmlReader 时,我在使用 XmlSerializer 时无法修剪字符串。 IgnoreWhitespace 选项无效,并且元素字符串仍然包含 \n 和空格。

有没有办法“即时”修剪它? 我更喜欢这种方法,因为我反序列化为字符串数组

这是一个示例 xml:

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <element>
    some random string
  </element>
  <element>
    another random string
  </element>
</root>"

下面是示例代码:

class Program
    {
        public static void Main(string[] args)
        {
            string xml =
            @"<?xml version='1.0' encoding='UTF-8'?>
            <root>
              <element>
                 some random string
              </element>
                <element>
                 another random string
              </element>
            </root>";

            var string_reader = new StringReader(xml);

            var xml_reader = XmlReader.Create(string_reader, new XmlReaderSettings()
            {
                IgnoreWhitespace = true //setting this option doesn't work
            });
            root d = (root)new XmlSerializer(typeof(root)).Deserialize(xml_reader);
            d.elements[0].Contains("\n"); //true

            //Dispose string/xml reader

            Console.Read();
        }
    }

    public class root
    { 
        [XmlElement(ElementName ="element")]
        public string[] elements { set; get; }
    }

【问题讨论】:

  • IgnoreWhiteSpace 属性用于读取 XML,并忽略元素和属性之间的任何空白。它不会从元素值中删除空格。更多信息在这里msdn.microsoft.com/en-us/library/…
  • 我明白了,谢谢。你知道我可以在这种情况下使用什么吗?
  • 在读取 XML 文件后循环遍历 root.elements 数组,并手动修剪掉空格。

标签: c# .net xml xml-serialization


【解决方案1】:

读入XML文件后,需要手动修剪掉空格

root d = (root)new XmlSerializer(typeof(root)).Deserialize(xml_reader);
for (int i = 0; i < d.elements.Count; i++)
{
  d.elements[i] = d.elements[i].Replace("\n", String.Empty).Trim();
}

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 2011-03-23
    • 1970-01-01
    • 2011-05-07
    • 2020-04-25
    • 2012-05-23
    • 2017-10-23
    • 2012-03-14
    • 2020-09-09
    相关资源
    最近更新 更多