Seite 4 von 8

Verfasst: 13.01.2005 11:49
von derRaab
Ok. :mrgreen:

Dann werde ich mich wohl gedulden bis nächste Woche. Ich könnte auch einen Workaround finden, aber das spare ich mir dann.

Dann hätte ich noch einen anderen Wunsch: Das mag Dir vielleicht etwas unnützt vorkommen, aber vielleicht könntest Du eine Option einbauen, die beim Speichern des XML als Datei Tabs und Zeilenumbrüche einfügt, um so beim Öffnen der Datei mit einem Standardeditor eine übersichtliche Darstellung zur manuellen Weiterbearbeitung vorhanden ist.

Vielleicht läßt sich das ja recht einfach umsetzten? :oops:

So ähnlich wie bei meiner bescheidenen rekursiven Funktion:
http://www.robsite.de/php/pureboard/vie ... highlight=

Aber schon jetzt Danke für die Lib...

Verfasst: 16.01.2005 01:35
von bluejoke
ich finde einfach keine Möglichkeit, den Inhalt einer Eigenschaft eines Nodes auszulesen.

EDIT: also ich hol mir die AttributeList und dann weiß ich nicht mehr weiter. Ich habe nur eine Eigenschaft (string) und würde die gerne auslesen.

Danke, Simon

Verfasst: 16.01.2005 12:04
von Kiffi
> ich finde einfach keine Möglichkeit, den Inhalt einer Eigenschaft eines
> Nodes auszulesen.

ich nehme an, daß Du mit 'Eigenschaften' die 'Attribute' eines Nodes
meinst.

wenn ja: dafür kannst Du folgendes nehmen:

Konventionell:

Code: Alles auswählen


  oDomDoc = PT_MSXML3CreateDomDocument()
  
  If oDomDoc
    
    sXML.s = "<items>"
    sXML.s + " <item id='1'>Eintrag 1</item>"
    sXML.s + " <item id='2'>Eintrag 2</item>"
    sXML.s + " <item id='3'>Eintrag 3</item>"
    sXML.s + " <item id='4'>Eintrag 4</item>"
    sXML.s + " <item id='5'/>"
    sXML.s + "</items>"
    
    If PT_MSXML3LoadXML(oDomDoc, sXML)
      
      oNode = PT_MSXML3SelectSingleNode(oDomDoc,"items/item")
      
      If oNode
        
        oAttributes = PT_MSXML3GetAttributes(oNode)
        
        If oAttributes
          
          oAttribute = PT_MSXML3GetNamedItem(oAttributes, "id")
          
          If oAttribute
            
            MessageRequester("", PT_MSXML3GetText(oAttribute))
            
          EndIf
          
        EndIf
        
      EndIf
      
    EndIf
    
  EndIf

oder mit einer special-Function:

Code: Alles auswählen


  oDomDoc = PT_MSXML3CreateDomDocument()
  
  If oDomDoc
    
    sXML.s = "<items>"
    sXML.s + " <item id='1'>Eintrag 1</item>"
    sXML.s + " <item id='2'>Eintrag 2</item>"
    sXML.s + " <item id='3'>Eintrag 3</item>"
    sXML.s + " <item id='4'>Eintrag 4</item>"
    sXML.s + " <item id='5'/>"
    sXML.s + "</items>"
    
    If PT_MSXML3LoadXML(oDomDoc, sXML)
      
      oNode = PT_MSXML3SelectSingleNode(oDomDoc,"items/item")
      
      If oNode
        
        MessageRequester("", PT_MSXML3SpecialGetNamedAttributeValue(oNode, "id") )
        
      EndIf
      
    EndIf
    
  EndIf

Grüße ... Kiffi

Verfasst: 16.01.2005 12:22
von bluejoke
Cool! Danke!
Deine Lib gefällt mir Prima, aber über ausführliche deutsche Hilfetexte und ein paar mehr Beispiele wäre ich super glücklich. Wobei ich dich natürlich sonst auch im Forum stören kann :D

Simon

Verfasst: 17.01.2005 15:21
von derRaab
Hallo <)

Ich wollte mich kurz erkundigen, ob kiffi evtl. dazu gekommen ist, die Funktion 'PT_MSXML3InsertBefore' zu aktivieren?

:mrgreen:

Verfasst: 17.01.2005 17:47
von Kiffi
> Ich wollte mich kurz erkundigen, ob kiffi evtl. dazu gekommen ist, die
> Funktion 'PT_MSXML3InsertBefore' zu aktivieren?

Mensch, immer dieser Stress! ;)

OK, die neue Version ist nun online und unter

http://b-4-b.de/pt_msxml3_2005-01-17.zip

verfügbar.

Wichtig! Die Schreibweise der Funktionen wurde verändert. Hinter
PT_MSXML3 folgt nun zur besseren Übersicht ein Unterstrich und dann erst
der eigentliche Funktionsname. Beispiel:

PT_MSXML3InsertBefore() -> PT_MSXML3_InsertBefore

Diese Schreibweise hatte ich schon in meiner ersten Version vor, aber
konnte das durch einen Fehler in TailBite nicht realisieren. Da der Fehler
nun von El_Choni behoben wurde (an dieser Stelle noch mal vielen Dank!),
habe ich mein Vorhaben nachgeholt.

Für diejenigen, die die Lib schon im Einsatz haben bedeutet das: Suchen im
Quelltext nach "PT_MSXML3" und ersetzen durch "PT_MSXML3_"

Ebenso wurden die Attribut-relevanten Funktionen auch umbenannt.

PT_MSXML3_GetValue() -> PT_MSXML3_AttributesGetValue()
PT_MSXML3_PutValue() -> PT_MSXML3_AttributesPutValue()

Sorry für die Umstände!

Geändert in dieser Version:

* PT_MSXML3 benötigt nun keine COMLIB mehr.

* PT_MSXML3_InsertBefore funktioniert nun endlich :)

* PT_MSXML3_Save() funktioniert nun korrekt.

* Neue Funktion PT_MSXML3_SpecialSetNamedAttributeValue().
Hiermit kann man komfortabel den Attribut-Wert eines Nodes
verändern.

Noch nicht geändert:

* PT_MSXML3_CreateNode() habe ich noch immer nicht zum Laufen
bekommen und vorerst aus der Lib entfernt. Als Ersatz kann hier
PT_MSXML3_CreateElement() verwendet werden.

* Es gibt noch immer keine Online-Hilfe, sondern nur eine Befehlsreferenz.
Sorry for that!

Viel Spass beim Ausprobieren! :)

Ich stehe Euch latürnich wie immer mit Rat & Tat zur Seite.

Grüße ... Kiffi

Verfasst: 17.01.2005 17:58
von remi_meier
:allright: :allright: und danke!

Verfasst: 17.01.2005 18:33
von bluejoke
whow! Super.
Bei den neuen Befehlsnamen wär ich wohl auch draufgekommen, wie man ein Attribut-Wert bekommt :D

Verfasst: 17.01.2005 20:40
von Kiffi
> Bei den neuen Befehlsnamen wär ich wohl auch draufgekommen,
> wie man ein Attribut-Wert bekommt :D

nun ja, ich wollte eigentlich die Funktionen so benennen, wie sie in der
MSXML3.DLL angegeben worden sind. Leider leidet dadurch die Bedienbarkeit
der Lib erheblich, weil MS ziemlich inkonsequent die Bezeichnungen vergeben
hat.

Grüße ... Kiffi

Verfasst: 17.01.2005 23:08
von bluejoke
Ich fänds übrigens auch besser (hoffe, das löst jetzt keinen Glaubesnkrieg aus) kürzere Funktionsnamen zu haben, z.B. XML_funktion()