.NET使用XmlTextReader查找特定的XML节点后编辑它们

时间:2011-01-06 15:23:26

标签: c# xml

需要编辑XML文件中的某些节点。

我用XmlTextReader收集它们。如果我遇到一个备注节点,我跳到下一个节点。如果我遇到其他指定节点并且它们没有以某种模式开头,我将它们放在一个集合中。

List<KeyValuePair<string, string>> Data = new List<KeyValuePair<string, string>>();
string key = "";
string value = "";
reader = new XmlTextReader(file);

switch (reader.NodeType)
{
    case XmlNodeType.Element:
        switch (reader.Name)
        {
            case "Remark":
                reader.Skip();
                break;
            case "DataTableColumn":
            case "Label":
            case "Button":
            case "PopupPanel":
                while (reader.MoveToNextAttribute())
                {
                    switch (reader.Name)
                    {
                        case "ID":
                            key = reader.Value;
                            break;
                        case "Header":
                        case "Caption":
                            value = reader.Value;
                            break;
                    }
                }
                if (!value.StartsWith("@"))
                {
                    Data.Add(new KeyValuePair<string, string>(key, value));
                }
                break;
        }
        break;
}

现在我已经修改了集合中所有项目的值,我想更新原始文件。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:2)

你有没有理由不使用XSLT?这似乎是最合适的技术。

答案 1 :(得分:2)

如果您需要修改XML文件,我建议您使用XDocument,前提是文件足够小,可以加载到内存中。
否则使用XmlReader与XmlWriter结合进行读写,或者使用XSLT。

答案 2 :(得分:1)

首先,不要使用new XmlTextReader()。它自.NET 2.0以来就被弃用了。请改用XmlReader.Create()

其次,XmlReader是一个只读的只进游标。你不能回去写出修改过的节点。

您应该使用LINQ to XML或XmlDocument来完成这类工作。