я столкнулся с одной проблемой
у меня есть два XML-файла.
Plugins.xml
<SolutionProfile xmlns="http://schemas.microsoft.com/pag/cab-profile">
<Modules>
<ModuleInfo AssemblyFile="PluginXXX.dll" />
</Modules>
</SolutionProfile>
ProfileCatalog.xml
<SolutionProfile xmlns="http://schemas.microsoft.com/pag/cab-profile/2.0">
<Section Name="Services">
<Modules>
<ModuleInfo AssemblyFile="Module.dll" />
</Modules>
</Section>
<Section Name="Apps">
<Dependencies>
<Dependency Name="Services" />
</Dependencies>
<Modules>
<ModuleInfo AssemblyFile="PluginABC.dll" >
</Modules>
</Section>
</SolutionProfile>
Я хочу переместить PluginXXX.dll из Plugins.xml в ProfileCatalog.xml.
код, который я использовал как
public static void PluginLoaded(string pluginName)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
XDocument pluginDoc = XDocument.Load("Plugins.xml");
XDocument profileCatalogDoc = XDocument.Load("ProfileCatalog.xml");
XmlWriter pluginDocXmlWriter = XmlWriter.Create("Plugins.xml", settings);
XmlWriter profileCatalogDocXmlWriter = XmlWriter.Create("ProfileCatalog.xml", settings);
XNamespace ns = "http://schemas.microsoft.com/pag/cab-profile";
var res = from plugin in pluginDoc.Descendants(ns + "ModuleInfo")
where plugin.Attribute("AssemblyFile").Value == pluginName
select plugin;
// save the plugin to remove
XElement pluginToMove = res.FirstOrDefault();
//remove from xml
res.FirstOrDefault().Remove();
// save xml back
pluginDoc.Save(pluginDocXmlWriter);
XNamespace pns = "http://schemas.microsoft.com/pag/cab-profile/2.0";
var pRes = ((from pcPlugin in profileCatalogDoc.Descendants(pns + "Modules")
select pcPlugin).Skip(1).Take(1)).FirstOrDefault();
pRes.Add(pluginToMove);
profileCatalogDoc.Save(profileCatalogDocXmlWriter);
//TODO : move the plugin name from Plugins.xml to ProfileCatalog.xml
profileCatalogDocXmlWriter.Close();
pluginDocXmlWriter.Close();
}
ПРИМЕЧАНИЕ существует разница в xmlns между обоими файлами.
когда я перемещаю узел из Plugins.xml в ProfileCatalog.xml, он добавляет элемент как
<ModuleInfo AssemblyFile="PluginXXX.dll" xmlns="http://schemas.microsoft.com/pag/cab-profile" />
Я хочу удалить этот xmlns перед добавлением в этот файл.
пожалуйста, дайте мне решение.