我试图从文件夹中的多个XML文件中提取soap:Body
的内容。它适用于单个文件,如下所示:
XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
doc.LoadXml(doc.DocumentElement.SelectSingleNode("soap:Body", mgr).ChildNodes[0].OuterXml);
doc.Save(@"E:\new.xml");
要对多个文件执行相同操作,我使用以下代码:
XmlDocument xDoc = new XmlDocument();
string path = @"C:\Folder";
foreach (string file in Directory.EnumerateFiles(path, "*.xml"))
{
xDoc.Load(Path.Combine(Directory.GetCurrentDirectory(), file));
XmlNamespaceManager mgr = new XmlNamespaceManager(xDoc.NameTable);
mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
xDoc.LoadXml(xDoc.DocumentElement.SelectSingleNode("soap:Body", mgr).ChildNodes[0].OuterXml);
}
如何在处理文件后保存文件?
答案 0 :(得分:0)
这样的事情:
XmlDocument xDoc = new XmlDocument();
string path = @"C:\Folder";
foreach (string file in Directory.EnumerateFiles(path, "*.xml"))
{
xDoc.Load(Path.Combine(Directory.GetCurrentDirectory(), file));
XmlNamespaceManager mgr = new XmlNamespaceManager(xDoc.NameTable);
mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
xDoc.LoadXml(xDoc.DocumentElement.SelectSingleNode("soap:Body", mgr).ChildNodes[0].OuterXml);
doc.Save("E:\\" + file);
}
此致
答案 1 :(得分:0)
您正在循环某个文件夹中的每个文档,然后您想在对某个文件夹进行一些编辑后保存每个文件吗?
你可以在foreach循环中添加一些变量作为计数器,并使用Save()方法(这样每个文件都用新名称保存):
doc.Save(string.Format(@"E:\new{0}.xml", counter);
++counter; // new number for next file
或者您可以使用TaiT的答案并保存每个文件与原始文件同名。