2016-03-03 54 views
0

我试图从文件夹中的多个XML文件中提取soap:Body的内容。它正在为一个单一的文件,如下所示:在同一个文件夹中处理多个XML文件并使用c保存它们#

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); 

} 

如何将文件保存处理它们之后?

+2

那么你坚持保存文件的哪一部分?真的不太清楚问题是什么...... –

回答

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); 
} 

问候,

+0

谢谢泰特的。但是,当我尝试使用'doc.Save(“E:\\”+文件);'我得到一个异常(不支持给定的路径格式) – TempoClick

+0

这是因为你的“文件”变量包含绝对路径,文件名。这就是返回[EnumerateFiles函数](https://msdn.microsoft.com/en-us/library/dd383458(v = vs.110).aspx)。这意味着你的“文件”变量以“C:\ ..”开头,它试图保存这样的文件:“E:\ C:\ Your \ Path.xml”,这显然不是一个合适的路径,是错误。试试这样做:'doc.Save(“E:\\”+ Path.GetFileName(file))''。这将使用相同的文件名将文件保存在E:\ root中。并且请不要忘记标记它作为答案,如果它为你工作欢呼。 –

+0

Hi TaiT的。它工作正常。谢谢。 – TempoClick

0

编辑:我想我明白你问什么。

您正在循环播放某种文件夹中的每个文档,然后您希望在对其他文件夹进行一些编辑之后保存每个文件?

你可以添加一些变量,在foreach循环计数器,并使用Save()方法本身(使每一个文件保存的新名称):

doc.Save(string.Format(@"E:\new{0}.xml", counter); 
++counter; // new number for next file 

或者你可以使用泰特的答案,并保存每个文件与原始文件名称相同。

相关问题