IXMLDOMNodeListPtr
-
Moin Leute....
und zwar hab folgendes Problem. Ich habe ne Pointer-Liste aus Knoten, welche wie folgt initialisiert wird:
IXMLDOMNodeListPtr pNodeList = objDOMDoc->selectNodes(_n);In dieser Liste befinden sich jetzt jedoch mehr Knoten, als ich letztendlich benötige. Sprich über variable Suchkriterien, die vom Nutzer eingegeben werden, möchte ich die Suche in dieser Liste verfeinern. Also hab ich mir gedacht, ich mache einfach eine zweite Liste unter ein If-Else, wo dann alle "richtigen" Knoten reinkommen. So, und da liegt mein Problem, da ich nicht weiß, wie ich bestimmte Elemente einer Liste, einer anderen zuweise. Probiert habe ich es wie folgt:
IXMLDOMNodeListPtr endList; string tmp; int c = 0; for(int i=0;i<pNodeList->length;i++) { for(int j=0; j<count; j++) { tmp = tryParentNodes(pNodeList, i, _parameter[j]); if(tmp==_parameterWert[j]) { //derzeitiges problem endList->item[j] = pNodeList->item[i]; c++; } } ... }_parameterWert ist der jeweilige Wert des Knotens (_parameter[j]). Dieser hat immer nur einen Wert, von daher hab ich das so gelöst.
Wie auch immer.
Hat jemand eine Ahnung, wie man das zuweisen kann?
Thx in advance...!!!
Matt
-
Mach Dir nen Vektor und häng die betreffenden Nodes rein; Ich gehe davon aus das Du das Docuement (den XML_Tree) nicht manipulierst sondern nur liest; ist das richtig?
Ferner wär's gut wenn Du Dich etwas an die Form hältst die ich Dir in dem Codebeispiel gezeigt hatte; das war nicht zum Spass so ausführlich gehalten!
Grüsse
*this
P.S.: Btw endlist ist nicht inittialisiert; so wie's da steht sollte es knallen.
-
jap... nur lesen.
tja ähm, wie mache ich denn nen vektor?

ach und wie soll ich endList initialisieren? denn an der stelle brauch ich ja noch keinen wert. nur auf NULL setzen oder wie?
-
M@tt schrieb:
jap... nur lesen.
tja ähm, wie mache ich denn nen vektor?

ach und wie soll ich endList initialisieren? denn an der stelle brauch ich ja noch keinen wert. nur auf NULL setzen oder wie?
#include <vector> /***/ std::vector<MSXML2::IXMLDOMNodePtr> nodeVector;Der Vetor kopiert die SmartPtr dann beim push_back(pNode); Du must den Vektor leeren damit die COM-Pointer released werden - die SmartPtr rufen ein AddRef() auf den enthaltenen MSXML2::IXMLDOMNode* auf und destruieren (genauer "releasen") ihn nur wenn keine Referenzen mehr übrig sind.
Damit ist die andere Frage ja gegenstandslos geworden; Du brauchst endlist gar nicht mehr.
Grüsse
*this
-
ok, also ehrlich gesagt hab ich null verstanden. und selbst wenn ich es so machen würde.... dann kann ich doch nicht mehr auf den vektor zugreifen wie auf den IXMLDOMNodeListPtr, oder?
mmmhhhhh also mir wäre es schon lieber, wenn ich einfach nur die elemente des einen ptr arrays auf ein anderes zuweisen könnte. so wie man es auch sonst mit normalen arrays macht. bspw so: int tmp[10], tmp2[20]; tmp[2]=tmp2[15];
ist das echt "unmöglich"?
-
M@tt schrieb:
ok, also ehrlich gesagt hab ich null verstanden. und selbst wenn ich es so machen würde.... dann kann ich doch nicht mehr auf den vektor zugreifen wie auf den IXMLDOMNodeListPtr, oder?
mmmhhhhh also mir wäre es schon lieber, wenn ich einfach nur die elemente des einen ptr arrays auf ein anderes zuweisen könnte. so wie man es auch sonst mit normalen arrays macht. bspw so: int tmp[10], tmp2[20]; tmp[2]=tmp2[15];
ist das echt "unmöglich"?Gneau den Effekt erzieltst Du ja auch mit std::vector.
Schau Dir doch mal std::vector an!Grüsse
*this
-
mmhh naja....
werds trotzdem nochma in nem anderen forum probieren, denn irgendwie musses ja auch so gehn.
-
M@tt schrieb:
mmhh naja....
werds trotzdem nochma in nem anderen forum probieren, denn irgendwie musses ja auch so gehn.
Wo liegt dein Problem?
Im Moment sieht es so aus, als würde dir etwas Grundlagenwissen was C++ angeht fehlen..
-
kommt drauf an, was man mit "grundlagen" meint. denn ich denke die habe ich. nur habe ich null plan von vektoren etc. und das ist auch mein problem, wie man unschwer erkennen kann.
-
M@tt schrieb:
kommt drauf an, was man mit "grundlagen" meint. denn ich denke die habe ich. nur habe ich null plan von vektoren etc. und das ist auch mein problem, wie man unschwer erkennen kann.
Ah ich glaub ich habs. std::vector ist ein Array. Es heißt zwar in Anlehnung an den mathematischen Vektor vector, aber darunter steckt die Datenstruktur Array.
std::vector arbeitet also genauso wie das c-Array.
-
IXMLDOMNodeListPtr, so ein Bezeichner gehört verboten.
-
@Matt! Lern erstmal C++-Basics!!! Ist ja nicht zu ertragen...
-
Artchi schrieb:
@Matt! Lern erstmal C++-Basics!!! Ist ja nicht zu ertragen...
wie gesagt, es kommt drauf an, was man unter "basics" versteht.
außerdem..... warum liest du dir überhaupt den thread durch, wenn du's nicht ertragen kannst.
brauchst den doch nich zu lesen; also beschwer dich ni
-
Entenwickler /ausgeloggt schrieb:
IXMLDOMNodeListPtr, so ein Bezeichner gehört verboten.
kann ich nix für.... ist MSXML