Verwendung von XMLData

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Benutzerreferenz > Mechanismen >

Verwendung von XMLData

Mit XMLData haben Sie Zugriff auf die Elemente der aktuell angezeigten XML-Datei. Sie können damit alle erforderlichen Änderungen an den Elementen der XML-Schemastruktur vornehmen. Die Hauptfunktion von XMLData ist:

 

1.Zugriff auf die Namen und Werte jeder Art von Datenelementen (z.B. Elemente, Attribute)
2.Erstellung von neuen Datenelementen jeder Art
3.Einfügen und Anhängen neuer Elemente
4.Löschen vorhandener Child-Elemente

 

Die XMLData-Schnittstelle funktioniert in der Authentic API anders als in der XMLSpy API, insbesondere, wenn Sie neue in die XML-Datei einfügen oder bestehende Elemente umbenennen. Lesen Sie dazu bitte die folgenden Abschnitte "Erstellen und Einfügen neuer XMLData-Objekte" und "Name und Wert von Elementen".

 

Struktur von XMLData

Um diese XMLData-Schnittstelle verwenden können, müssen Sie wissen, wie eine bestehende XML-Datei auf eine XMLData-Struktur gemappt wird. Beachten Sie dabei vor allem, dass XMLData keine separaten Objekte für Attribute hat; die Attribute eines Elements sind gleichzeitig Children des Elements. Ein Element kann andere Arten von Children haben (wie z.B. Child-Elemente und Textinhalt). Die XMLData.Kind-Eigenschaft gibt Ihnen die Möglichkeit, zwischen den verschiedenen Child-Typen eines Elements zu unterscheiden. Nachfolgend finden Sie ein Beispiel:

 

Der folgende XML-Code

 

 <ParentElement>

         <FirstChild attr1="Red" attr2="Black">

                 This is the value of FirstChild

         </FirstChild>

         <SecondChild>

                 <!--Your Comment-->

                 </DeepChild>

         </SecondChild>

         This is Text

 </ParentElement>

 

wird auf die folgende XMLData-Objektstruktur gemappt:

 

 api_XMLData

 

Das Parent-Element aller XML-Elemente in einer Datei ist die Eigenschaft Authentic.XMLRoot. Über dieses XMLData-Objekt werden alle anderen XML-Elemente in der Struktur referenziert.

 

Name und Wert von Elementen

Mit Hilfe der Eigenschaften XMLData.Name und XMLData.TextValue können Sie den Namen und Wert aller XML-Elementtypen abrufen und ändern. Es kann vorkommen, dass mehrere Arten von XMLData-Objekten und leere Elemente keinen damit verknüpften Textwert haben. Es ist nicht ratsam, den Namen eines bestehenden XML-Elements in der Authentic-Ansicht zu ändern, da der Name bestimmt, wie der Inhalt des Elements in der Authentic-Ansicht angezeigt wird. Nähere Informationen zu diesem Thema finden Sie in der Dokumentation zu StyleVision.

 

Erstellen und Einfügen neuer XMLData-Objekte

Um ein neues XMLData-Objekt (z.B. ein Element, Attribut oder einen Text-Node) einzufügen, gehen Sie folgendermaßen vor:

 

1.Erstellen Sie mit Hilfe der Authentic.CreateChild-Methode das neue XMLData-Objekt.Definieren Sie den Namen und Wert, bevor Sie es einfügen.
2.Fügen Sie das neue Objekt an der richtigen Stelle mit einer Referenz zu seinem übergeordneten Objekt ein: (i) Wenn das neue Child-Datenelement das letzte Child-Datenelement des Parent-Datenelements werden soll, verwenden Sie die XMLData.AppendChild-Methode. (ii) Falls das neue Child-Datenelement an einer anderen Stelle in der Sequenz der Child-Objekte angelegt werden soll, verwenden Sie entweder XMLData.GetFirstChild oder XMLData.GetNextChild, das Child-Datenelement anzugeben, vor dem das neue Child-Datenelement eingefügt werden soll. Fügen Sie anschließend das neue Child mit Hilfe von XMLData.InsertChild ein. Das neue Child-Datenelement wird unmittelbar vor dem aktuellen Child-Datenelement eingefügt.

 

Anmerkung: In der Authentic-Ansicht kann ein neues Element zusammen mit seiner Substruktur erstellt werden, da die Substruktur im XML-Schema definiert ist. Ob die Substruktur erstellt wird, kann in den Node-Einstellungen des SPS definiert werden, siehe dazu die Dokumentation zu StyleVision.

 

Im folgenden Beispiel wird ein drittes Child-Datenelement zwischen die Elemente <FirstChild> und <SecondChild> eingefügt:

 

 Dim objParent

 Dim objChild

 Dim objNewChild

 

 Set objNewChild = objPlugIn.CreateChild(spyXMLDataElement)

 objNewChild.Name = "OneAndAHalf"

 

 'objParent is set to <ParentElement>

 'GetFirstChild(-1) gets all children of the parent element

 'and move to <SecondChild>

 Set objChild = objParent.GetFirstChild(-1)

 Set objChild = objParent.GetNextChild

 

 objParent.InsertChild objNewChild

 Set objNewChild = Nothing

 

Child-Elemente sollten in einer bestimmten Reihenfolge eingefügt werden. Fügen Sie zuerst die Attribute des Elements ein und dann die Child-Elemente des Elements. Der Textinhalt eines Elements muss als Child-Node vom Typ "Text" hinzugefügt werden; verwenden Sie Authentic.CreateChild mit dem Parameterwert 6. Der Textinhalt eines Elements wird als Textwert des Child-Node eingegeben.

 

Kopieren vorhandener XMLData-Objekte

Die Methoden XMLData.InsertChild und XMLData.AppendChild können nicht zum Einfügen bestehender XMLData-Objekte an einer anderen Stelle in derselben Datei verwendet werden. Diese Methoden funktionieren nur bei neuen XMLData-Objekten. Stattdessen müssen Sie die Objekthierarchie manuell kopieren. Im Folgenden sehen Sie ein Beispiel für eine in JavaScript geschriebene Funktion, mit der XMLData rekursiv kopiert werden:

 

 // this function returns a complete copy of the XMLData object

 function GetCopy(objXMLData)

 {

         var objNew;

         objNew = objPlugIn.CreateChild(objXMLData.Kind);

 

         objNew.Name = objXMLData.Name;

         objNew.TextValue = objXMLData.TextValue;

 

         if(objXMLData.HasChildren)        {

                 var objChild;

                 objChild = objXMLData.GetFirstChild(-1);

         

                 while(objChild)        {

                         try {

                                 objNew.AppendChild(GetCopy(objChild));

                                 objChild = objXMLData.GetNextChild();

                         }

                         catch(e) {

                                 objChild = null;

                         }

                 }

         }

 

         return objNew;

 }

 

 

Entfernen von XMLData-Objekten

XMLData bietet zwei Methoden zum Entfernen von Child-Objekten: XMLData.EraseAllChildren und XMLData.EraseCurrentChild. Zum Entfernen von XMLData-Objekten müssen Sie zuerst das Parent-Element der zu löschenden Elemente aufrufen. Verwenden Sie XMLData.GetFirstChild und XMLData.GetNextChild, um eine Referenz auf das XMLData-Parent-Objekt zu erhalten. Beispiele zum Löschen von XML-Elementen finden Sie unter der Beschreibung der Methoden XMLData.EraseAllChildren und XMLData.EraseCurrentChild.

 


© 2019 Altova GmbH