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:
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.