根据目录中的XML文件数创建多个XmlDocument对象

时间:2015-12-28 14:00:01

标签: c# xml

我在目录中有多个XML文件,您可以将每个目录视为每个方案。根据业务场景,XML文件的数量可能在目录中不同。

从下面的代码我得到了文件总数。

string tempPath = rootPath+"/Templates"; // Template directory path
DirectoryInfo d = new DirectoryInfo(@tempPath);
FileInfo[] files = d.GetFiles("*.xml"); // getting all file names

我试图像下面的代码一样设置xml的命名空间

//Setting namespace for each xml

foreach(FileInfo file in files)
{
    var tempXml = file.Name;
    XmlDocument tempXml = new XmlDocument();
    tempXml.Load(tempPath+"/"+file.Name);
    XmlNamespaceManager nsMgr = new XmlNamespaceManager(tempXml.NameTable);
    nsMgr.AddNamespace("imp", namespace1); // namespace1 value I took it from excel
    nsMgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/"); 
}

后来我尝试在xml doc中插入值,如下所示

XmlNode businessContactNumber = doc.SelectSingleNode(xPath,nsMgr);

上面的代码无效,我知道代码中有一些严重的错误。这是C#代码的新手,请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用XML Linq

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;

namespace ConsoleApplication62
{
    class Program
    {
        const string FOLDER = @"\c:\temp";
        static void Main(string[] args)
        {
            string[] filenames = Directory.GetFiles(FOLDER);
            foreach (string file in filenames)
            {
                XDocument tempXml = XDocument.Load(file);
                XElement root = (XElement)tempXml.FirstNode;
                XNamespace  nsMgr = root.Name.Namespace;

                XElement node = root.Descendants(nsMgr + "TagName").FirstOrDefault();
            }

        }
    }
}