2009-07-21 9 views
0

Par exempleYat-il un moyen facile de créer de nouveaux fichiers XML à partir d'un fichier xml en utilisant C#

<?xml version="1.0" encoding="UTF-8"?> 
<!--just example, the actual element structure is rather complex --> 
<components> 
    <component name='a'/> 
    <component name='b'/> 
    <component name='c'/> 
</components> 

Maintenant, je veux créer trois fichiers XML distinct, dont l'élément racine est composant et le nom du fichier est selon la nom attribut d'entre eux, Comment puis-je y parvenir?

Cordialement,

Répondre

0

vous allez ici:

System.Xml.XmlDocument daddyDoc = new System.Xml.XmlDocument(); 
daddyDoc.LoadXml("<?xml version='1.0' encoding='UTF-8'?><components><component name='a'/><component name='b'/><component name='c'/></components>"); 
foreach (System.Xml.XmlNode sprogNode in daddyDoc.GetElementsByTagName("component")) 
{ 
    System.Xml.XmlDocument sprogDoc = new System.Xml.XmlDocument(); 
    sprogDoc.CreateXmlDeclaration("1.0", "UTF-8", null); 
    sprogDoc.AppendChild(sprogDoc.CreateElement("component")); 
    sprogDoc.Save(string.Format("C:\\{0}.xml", sprogNode.Attributes["name"].Value)); 
} 
1

LINQ pour XML, quelque chose le long des lignes de

XElement rootElem = ... //load this however you happen to 
foreach (var component in rootElem.Elements("component")) 
    component.Save(your-XmlWriter-here); //you'll want a distinct writer per file 

devrait fonctionner correctement; pour votre exemple spécifique ...

string xml [email protected]" 
    <components> 
     <component name='a'/> 
     <component name='b'/> 
     <component name='c'/> 
    </components> 
"; 
foreach (XElement component in XElement.Parse(xml).Elements()) 
    component.Save(component.Attribute("name").Value + ".xml"); 

fonctionne exactement comme spécifié. Cependant, je trouve que c'est une bonne pratique d'éviter de traiter des noms de fichiers spécifiques dans la mesure du possible, car souvent votre XML peut être traité directement plus tard dans le pipeline sans avoir besoin d'un fichier intermédiaire (lent et sujette aux erreurs). Par exemple, sur un serveur Web, il n'est pas évident que vous ayez des autorisations pour écrire quoi que ce soit, ce qui réduit la portabilité en forçant l'utilisation d'un fichier réel.

Questions connexes