2010-10-29 47 views
2

背景
我正在读写使用读写器的XML文档,并在读写操作之间过滤逻辑以确定哪些部分读取应该被写回(有效地剥掉一些标签)。 ..如何写出一个EntityReference(例如 )到XmlWriter,由XmlNodeReader读取?

我实现的选择目前是以下使用:XmlNodeReaderXmlWriterXmlNodeType

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,但我一直无法使用它向一个可行的解决方案。在细节上似乎很少 - 我宁愿有一个代码示例来补充它。

回答