Créer un nœud XML
J'ai le code XML ci-dessous le fichier où je veux ajouter un nouvel enfant en vertu de la première <Profile_Path></Profile_Path>
nœud.
XML d'origine:
<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Profile>
<Profile_Name>Profile 1</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
<Profile>
<Profile_Name>Profile 2</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
</Profiles>
Après avoir exécuté le code...
Public Sub CreateProjectXml()
ProfileList.Load(xml_path)
Dim profilesNode As XmlNode = ProfileList.SelectSingleNode("Profiles")
Dim profiles As XmlNodeList = profilesNode.SelectNodes("Profile")
Dim profile As XmlNode = profiles(2)
Dim project_info As XmlElement = ProfileList.CreateElement("Project_Name")
project_info.InnerText = "Project 1"
ProfileList.DocumentElement.AppendChild(project_info)
ProfileList.Save(xml_path)
End Sub
J'obtiens le résultat suivant:
<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Profile>
<Profile_Name>Profile 1</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
<Profile>
<Profile_Name>Profile 2</Profile_Name>
<Profile_Path>E:\Test</Profile_Path>
</Profile>
<Project_Name>Project 1</Project_Name>
</Profiles>
M'aider s'il vous plaît avec le bon code!
- Il serait utile si vous avez également donné un exemple de la sortie souhaitée XML. Ce n'est pas tout à fait clair ce que vous essayez d'atteindre.
Vous devez vous connecter pour publier un commentaire.
Le premier problème, c'est que vous ajoutez l'enfant en appelant
ProfileList.DocumentElement.AppendChild
. Cette méthode aura pour effet d'ajouter à l'enfant de l'élément document, qui est la racine de niveauProfiles
élément. Si vous voulez ajouter de l'enfant à la premièreProfile
élément, vous devez le modifier pour cela:Avis dans l'exemple ci-dessus, je l'ai changé pour utiliser
profiles(0)
au lieu deprofiles(2)
, de cette façon, il va utiliser la première plutôt que la troisième.Cependant, il vaut la peine de mentionner que
SelectNodes
etSelectSingleNode
utilisation de XPath. Cela signifie que vous pouvez simplifier votre logique considérablement en sélectionnant l'un des éléments que vous voulez vraiment, par exemple, si tout ce que vous voulez, c'est la premièreProfile
élément, vous pourriez faire ceci:La
SelectSingleNode
méthode renvoie le premier élément correspondant de toute façon, de sorte que vous n'avez pas besoin de spécifier l'index dans le XPath, mais si vous voulez être plus explicite, vous pouvez spécifier l'index pour ne recevoir que la première, comme ceci:Ou, si vous voulez obtenir la troisième
Profile
élément, vous pouvez utiliser cette XPath à la place:Ou, si vous voulez obtenir le
Profile
élément qui avait unProfile_Name
égal à "Profil 2", vous pourriez faire ceci:Etc. Si vous allez travailler avec XML bien, il serait bien utile de votre effort pour passer du temps à apprendre les bases de XPath. XPath est un standard XML langage de requête qui est utilisé dans de nombreux XML outils et langages de programmation. Par exemple, si vous allez jamais utiliser XSLT, vous aurez besoin de comprendre XPath. XPath peut être utilisé avec le
XmlDocument
classe, comme je l'ai mentionné ci-dessus, et aussi avec la nouvelleXDocument
classe.L'alternative à XPath est d'utiliser LINQ. LINQ est une propriété de la technologie Microsoft, de sorte que vous ne trouverez pas de soutien dans d'autres outils et langages de l'extérieur .NET, mais beaucoup de gens ne préfèrent. La nouvelle
XDocument
classe est conçu pour rendre XML facile à travailler grâce à LINQ. Combiné avec VB.NET soutien pour les littéraux XML, cette tâche est en fait assez facile avecXDocument
:Alex je pense que vous devriez utiliser le code suivant
Place de
Depuis que vous utilisez VB.Net, vous pouvez travailler avec des fichiers XML de la manière facile.
Maintenant
xml
estdonc en gros, vous avez juste besoin de ce: