背景
我正在使用读写器读写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
但是我不能用它来解决问题。它在细节上似乎很少——我希望有一个代码示例来补充它。