C# .NET在使用XmlTextReader找到特定的XML节点后编辑它们
XML文件中的某些节点需要编辑 我用XmlTextReader收集它们。如果我遇到备注节点,我会跳到下一个节点。如果我遇到其他指定的节点,并且它们不是以某个模式开始的,我会将它们放在一个集合中C# .NET在使用XmlTextReader找到特定的XML节点后编辑它们,c#,xml,C#,Xml,XML文件中的某些节点需要编辑 我用XmlTextReader收集它们。如果我遇到备注节点,我会跳到下一个节点。如果我遇到其他指定的节点,并且它们不是以某个模式开始的,我会将它们放在一个集合中 List<KeyValuePair<string, string>> Data = new List<KeyValuePair<string, string>>(); string key = ""; string value = ""; reader =
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;
}
列表数据=新列表();
字符串键=”;
字符串值=”;
reader=新的XmlTextReader(文件);
开关(reader.NodeType)
{
case XmlNodeType.Element:
开关(reader.Name)
{
案例“备注”:
reader.Skip();
打破
案例“DataTableColumn”:
案例“标签”:
案例“按钮”:
案例“PopupPanel”:
while(reader.MoveToNextAttribute())
{
开关(reader.Name)
{
案例“ID”:
key=reader.Value;
打破
案例“标题”:
案例“说明”:
value=reader.value;
打破
}
}
如果(!value.StartsWith(“@”))
{
添加(新的KeyValuePair(key,value));
}
打破
}
打破
}
现在,我已经修改了集合中所有项的值,我想更新原始文件。做这件事的最佳方法是什么?有什么理由不使用XSLT吗?这似乎是最适合这样做的技术。有什么理由不使用XSLT吗?这似乎是最适合这样做的技术。如果您需要修改XML文件,我建议您使用XDocument,前提是该文件足够小,可以加载到内存中。
否则,使用XmlReader进行读取,结合使用XmlWriter进行写入,或者使用XSLT。如果您需要修改XML文件,我建议您使用XDocument,前提是该文件足够小,可以加载到内存中。
否则,请使用XmlReader进行阅读,并结合使用XmlWriter进行编写,或者使用XSLT。首先,不要使用
新的XmlTextReader()
。自.NET 2.0以来,它一直被弃用。改用XmlReader.Create()
其次,XmlReader是一个只读、只向前的游标。您不能返回以写出修改的节点
您应该使用LINQ to XML或XmlDocument来完成这类工作。首先,不要使用
新的XmlTextReader()
。自.NET 2.0以来,它一直被弃用。改用XmlReader.Create()
其次,XmlReader是一个只读、只向前的游标。您不能返回以写出修改的节点
您应该使用LINQ to XML或XmlDocument来完成这类工作。您使用的是.NET的哪个版本?您使用的是.NET的哪个版本?除非我不能正确理解XSLT,否则它对我没有帮助。我需要找到并替换原始文件中的值。文件中有需要本地化的字符串,因此我想用指定的常量替换这些字符串。例如,变成。这在XSLT中相当简单。尽管如下所述,如果您不想使用XSLT,那么使用XmlDocument将比XMLReader更好,因为XMLReader是只读的,只能向前看。我需要找到并替换原始文件中的值。文件中有需要本地化的字符串,因此我想用指定的常量替换这些字符串。例如,变成。这在XSLT中相当简单。尽管如下所述,如果您不想使用XSLT,那么使用XmlDocument将比XMLReader更好,XMLReader是只向前和只读的。我不认为我能够做出与XmlReader相同的选择,但在再次查看MSDN后,我认为这是可能的。既然您有.NET 4.0,那么应该使用LINQ to XML。它要优雅一点。我试试XmlDocument。我不认为我能够做出与XmlReader相同的选择,但在再次查看MSDN后,我认为这是可能的。既然您有.NET 4.0,那么应该使用LINQ to XML。它相当优雅一点。