Get parent node
#include "stdafx.h" using namespace System; using namespace System::Xml; void Navigate(XmlNode ^node) { if (node == nullptr) return; if (node->Value != nullptr && node->Value->Equals("D")) { if (node->ParentNode->ParentNode["Name"]->FirstChild->Value->Equals("G")) { node->Value = "S"; node->ParentNode->Attributes["Damage"]->Value = "1d8"; } } Navigate(node->FirstChild); Navigate(node->NextSibling); } void main() { XmlDocument ^doc = gcnew XmlDocument(); try{ doc->Load("a.xml"); XmlNode ^root = doc->DocumentElement; Navigate(root); doc->Save("New.xml"); }catch (Exception ^e){ Console::WriteLine("Error Occurred: {0}", e->Message ); } }