xml文本里面有个换行的编码,不过用xmlreader读出来的时候,换行编码无效。会解析成空字符串,用xmldocument.load就可以换行。 不知道是什么原因xmlreader解析不了 这个换行编码
xml文本里面含有下面的内容:
<Field>
<Replace> </Replace>
</Field>
1. 用下面方法生成xml的时候,上面replace里面的内容是空内容
XmlReaderSettings settings = new XmlReaderSettings();
XmlDocument xmlDocument = new XmlDocument(); settings.DtdProcessing = DtdProcessing.Prohibit;
settings.XmlResolver = null; XmlReader xmlReader = XmlReader.Create(path, settings); xmlDocument.Load(xmlReader);
显示结果是
<Field>
<Replace></Replace>
</Field>
2. 用下面方法,上面replace里面的内容就是换行符
XmlDocument doc=new XmlDocument(); doc.Load(path);
显示结果是
<Field>
<Replace>
</Replace>
</Field>
看了楼主下面的举例说明应该是想知道在
// System.Xml.XmlDocument public virtual void Load(string filename) { XmlTextReader xmlTextReader = this.SetupReader(new XmlTextReader(filename, this.NameTable)); try { this.Load(xmlTextReader); } finally { xmlTextReader.Close(); } }
// System.Xml.XmlDocument public virtual void Load(Stream inStream) { XmlTextReader xmlTextReader = this.SetupReader(new XmlTextReader(inStream, this.NameTable)); try { this.Load(xmlTextReader); } finally { xmlTextReader.Impl.Close(false); } }
// System.Xml.XmlDocument public virtual void Load(TextReader txtReader) { XmlTextReader xmlTextReader = this.SetupReader(new XmlTextReader(txtReader, this.NameTable)); try { this.Load(xmlTextReader); } finally { xmlTextReader.Impl.Close(false); } }
XmlDocment.Load(XmlReader)通过XmlReader类的Read方法实现xml文档内容的读取
// System.Xml.XmlDocument public virtual void Load(XmlReader reader) { try { this.IsLoading = true; this.actualLoadingStatus = true; this.RemoveAll(); this.fEntRefNodesPresent = false; this.fCDataNodesPresent = false; this.reportValidity = true; XmlLoader xmlLoader = new XmlLoader(); xmlLoader.Load(this, reader, this.preserveWhitespace); } finally { this.IsLoading = false; this.actualLoadingStatus = false; this.reportValidity = true; } }
public class XmlTextReader : XmlReader, IXmlLineInfo, IXmlNamespaceResolver
非常感谢,解决了多年的疑惑。
@四龙须: 多看官方的文档,实在搞不明白就去看https://github.com/dotnet 源码。如果觉得实在还有问题说不定你发现了微软的一个bug
XmlReaderSettings.CheckCharacters = false;
试了你的方法,没有效果。加上XmlReaderSettings.CheckCharacters = false;之后,用xmlreader输出的xml结果还是忽略enter键的ASCII编码.
显示结果是
<Field>
<Replace></Replace>
</Field>
@四龙须: 你按照这种方式读读:http://blog.csdn.net/yukaizhao/article/details/6618707