public static void SetAttribute(
this IXPathNavigable navigable,
string prefix,
string localName,
string namespaceUri,
string value)
{
var navigator = GetNavigator(navigable);
if (navigator.CanEdit == false)
{
throw new InvalidOperationException(Resources.XPathNavigator_EditNotAllowed);
}
// Check if given localName exist
if (navigator.MoveToAttribute(localName, namespaceUri))
{
// Exist, so set current attribute with new value.
navigator.SetValue(value);
// Move navigator back to beginning of node
navigator.MoveToParent();
}
else
{
// Does not exist, create the new attribute
navigator.CreateAttribute(prefix, localName, namespaceUri, value);
}
}