2010-10-29 50 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,但我一直無法使用它向一個可行的解決方案。在細節上似乎很少 - 我寧願有一個代碼示例來補充它。

回答