XML neuen Knoten mit insertBefore einfügen
-
Ich zerschiesse irgendwie mein XMLDOMDocument und weiss nicht warum?
folgendes funktioniert einwandfrei:
MSXML2::IXMLDOMDocument2Ptr pDoc("Msxml2.DOMDocument.4.0"); _variant_t v_file(m_strFilePath); pDoc->async=false; pDoc->load(v_file); _bstr_t bQuery1(_T("//MeinKnoten"); pNode = pDoc->selectSingleNode(bQuery1); //Parent Knoten suchen pChild = pDoc->createElement(_T("TestElement")); //Child erzeugen pChild->setAttribute(_T("index"), _T("25")); _variant_t v; v.punkVal = pRefChild; v.vt = VT_UNKNOWN; pChild = pNode->insertBefore(pChild, v); //und einfügen pDoc->save(v_file);Das ist mir aber zu unflexiebel. Ich möchte den neuen Knoten mit einem XML String erzeugen. Folgendes zerschiesst aber anscheinend mein Dokument

.... //XML Dokument laden und Parent Knoten suchen wie oben MSXML2::IXMLDOMDocument2Ptr pInnerDoc("Msxml2.DOMDocument.4.0"); pInnerDoc->loadXML(_T("<TestElement index=\"25\"/>"); _bstr_t bQuery7(_T("//TestElement"); pChild = pInnerDoc->selectSingleNode(bQuery7); //so ein neuen Knoten erstellen pChild->cloneNode(TRUE); //weiss nicht ob das nötig ist?? ... //pChild in pNode einfügen wie obenFolgendes passiert jetzt. Beim ersten Durchlauf scheint alles zu gehen. Das neue Child steht wirklich in der XML Datei drin. Ruf ich das ganze ein 2. mal in einer Schleife auf, dann schmeisst mir MSXML eine Exception (kein _com_error!!). Keine Ahnung warum, aber immer wieder an verschiedenen Stellen. Meistens aber beim selectSingleNode.
Komisch, beende ich meine App und starte neu, dann funzt wieder alles (aber nur genau 1 mal)Vergesse ich irgendwas beim Erzeugen meines Child Knotens über
pInnerDoc->loadXML(_T("<TestElement index=\"25\"/>");
