需要编辑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;
}
现在我已经修改了集合中所有项目的值,我想更新原始文件。这样做的最佳方式是什么?
答案 0 :(得分:2)
你有没有理由不使用XSLT?这似乎是最合适的技术。
答案 1 :(得分:2)
如果您需要修改XML文件,我建议您使用XDocument,前提是文件足够小,可以加载到内存中。
否则使用XmlReader与XmlWriter结合进行读写,或者使用XSLT。
答案 2 :(得分:1)
首先,不要使用new XmlTextReader()
。它自.NET 2.0以来就被弃用了。请改用XmlReader.Create()
。
其次,XmlReader是一个只读的只进游标。你不能回去写出修改过的节点。
您应该使用LINQ to XML或XmlDocument来完成这类工作。