如何忽略XML文件中的前导空格?

时间:2011-05-05 14:11:54

标签: c# xml xmldocument

我需要将xml从文件加载到XmlDocument中。问题是该文件包含一些前导空格。 (我无法控制生成文件的系统。) 是否有任何干净/简单的方法可以忽略或删除这些字符?

string SamplelRequestFile = @"C:\example.xml";
XmlDocument docXML = new XmlDocument(); 
XmlTextReader xReader = new XmlTextReader(SamplelRequestFile);
XmlReaderSettings ReaderSettings = new XmlReaderSettings();
ReaderSettings.XmlResolver = null;
ReaderSettings.ProhibitDtd = false;
docXML.Load(xReader);

example.xml(注意前导空格)

  <?xml version="1.0" ?>
<myRoot>
<someElement />
</myRoot>

6 个答案:

答案 0 :(得分:4)

你只需做类似

的事情
 using (StreamReader sr = new StreamReader(@"C:\example.xml"))
 {
      XmlDocument docXML = new XmlDocument(); 
      docXML.LoadXml(sr.ReadToEnd().Trim());
      ...
 }

答案 1 :(得分:3)

这是无效的XML

根据XML规范, pi 处理指令必须是第一个字符(如果存在)。

我建议您通过修剪 XML来预处理XML。


解决方法:

string content = File.ReadAllText(@"C:\example.xml");
XmlDocument doc = new XmlDocument();
doc.LoadXml(content.Trim());

答案 2 :(得分:2)

这是一个有效的示例:

        string file = @"C:\example.xml";
        XmlDocument docXML = new XmlDocument();
        using (TextReader x = new StreamReader(file))
        {
            while (x.Peek() == ' ')
                x.Read();
            docXML.Load(x);
        }

答案 3 :(得分:1)

自己在文件上创建StreamStreamReader,然后Peek(),只要看到空格,就会使用流中的字符。确定下一个字符为<后,将该流传递给XmlTextReader构造函数。

答案 4 :(得分:0)

您是否尝试过添加此标记?

ReaderSettings.IgnoreWhitespace = true;

答案 5 :(得分:0)

string newXml = string.TrimLeft(oldXml);