2

背景
我正在使用读取器和写入器读取和写入 XML 文档,在读取和写入操作之间使用过滤逻辑来确定应该写回读取的部分(实际上它会去除一些标签)......

我目前选择的实现如下: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 文章指出实体引用在解析时有些特殊,但我无法将其用于工作解决方案。细节似乎很少 - 我希望有一个代码示例来补充它。

4

1 回答 1

1

您可以参考此链接:http: //msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx

希望这可以帮助!!

XmlReader.Name属性
在派生类中重写时,获取当前 node.node 的限定名称。

于 2010-10-29T22:21:16.057 回答