我需要将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>
答案 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)
自己在文件上创建Stream
和StreamReader
,然后Peek()
,只要看到空格,就会使用流中的字符。确定下一个字符为<
后,将该流传递给XmlTextReader
构造函数。
答案 4 :(得分:0)
您是否尝试过添加此标记?
ReaderSettings.IgnoreWhitespace = true;
答案 5 :(得分:0)
string newXml = string.TrimLeft(oldXml);