背景
我正在使用读写器读取和编写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,但我无法将其用于工作解决方案。细节似乎很少 - 我希望有一个代码示例来补充它。
答案 0 :(得分:1)
您可以参考以下链接:http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx
希望这会有所帮助!!
XmlReader.Name 属性
在派生类中重写时,获取 当前的限定名称 node.node。