Y at-il un moyen d'ajouter un attribut à un nœud xml (dont j'ai le xpath de) en utilisant nant? Essayé xmlpoke mais il semble qu'il ne peut que mettre à jour les attributs existants.Ajouter un attribut à un nœud xml avec nant
merci.
Y at-il un moyen d'ajouter un attribut à un nœud xml (dont j'ai le xpath de) en utilisant nant? Essayé xmlpoke mais il semble qu'il ne peut que mettre à jour les attributs existants.Ajouter un attribut à un nœud xml avec nant
merci.
XmlPoke ne fonctionnera certainement pas car le xpath doit correspondre à quelque chose en premier lieu pour pouvoir le remplacer. La seule façon que je sais de le faire est de créer votre propre tâche qui vous permettrait d'ajouter des données à un fichier XML. Ces nouvelles tâches peuvent être soit construire séparément et ajoutés à NAnt en copiant dll dans NAnt \ bin, ou par l'extension NAnt directement à partir de vos fichiers de construction
Les informations que vous avez commencé se trouve sur <script/> Task
Si vous arriver à rendre cette tâche assez générique, il pourrait être bon d'essayer de le soumettre à NAntContrib afin que tout le monde en profite.
J'ai fait quelque chose de similaire récemment. Ceci est pour l'insertion de nœuds, mais devrait être facilement modifié.
<script language="C#" prefix="test" >
<references>
<include name="System.Xml.dll" />
</references>
<code>
<![CDATA[
[TaskName("xmlinsertnode")]
public class TestTask : Task {
#region Private Instance Fields
private string _filename;
private string _xpath;
private string _fragment;
#endregion Private Instance Fields
#region Public Instance Properties
[TaskAttribute("filename", Required=true)]
public string FileName {
get { return _filename; }
set { _filename = value; }
}
[TaskAttribute("xpath", Required=true)]
public string XPath {
get { return _xpath; }
set { _xpath = value; }
}
[TaskAttribute("fragment", Required=true)]
public string Fragment {
get { return _fragment; }
set { _fragment = value; }
}
#endregion Public Instance Properties
#region Override implementation of Task
protected override void ExecuteTask() {
System.Xml.XmlDocument document = new System.Xml.XmlDocument();
document.Load(_filename);
System.Xml.XPath.XPathNavigator navigator = document.CreateNavigator();
navigator.SelectSingleNode(_xpath).AppendChild(_fragment);
document.Save(_filename);
}
#endregion Override implementation of Task
}
]]>
</code>
</script>