【发布时间】:2010-10-29 21:53:34
【问题描述】:
背景
我正在使用读取器和写入器读取和写入 XML 文档,在读取和写入操作之间使用过滤逻辑来确定应该写回读取的部分(实际上它会去除一些标签)...
我目前选择的实现如下:XmlNodeReader、XmlWriter 和 XmlNodeType
using System.Xml;
// Read every node
using (XmlNodeReader reader = new XmlNodeReader(xmlFragment)) {
// But write out only nodes I want
using (XmlWriter writer = XmlTextWriter.Create(sb, writerSettings)) {
while (reader.Read()) {
//... with filtering logic here to choose what is to be written.
// I do want to write out all entity references
if (XmlNodeType.EntityReference == reader.NodeType)
; // but how do I do that here?
}
}
}
问题
当我在阅读器中遇到实体引用时,我在reader.Value 中得到一个空字符串“”,但在遇到的XML 源中它实际上是一个  值。所以它被检测到了,但我无法拥有。
显然是特殊情况或边缘案例:
我找到了以下MSDN article that indicates entity references are somewhat special while parsing,但我无法将其用于工作解决方案。细节似乎很少 - 我希望有一个代码示例来补充它。
【问题讨论】:
标签: c# .net xmlreader xmlwriter entityreference