XMLData gives you access to the elements of the currently displayed XML file. It enables you to perform all necessary modifications to the elements of the XML structure. The main functionality of XMLData is:
|1.||Access to the names and values of all kinds of elements (e.g. elements, attributes)|
|2.||Creation of new elements of all kinds|
|3.||Insertion and appending of new elements|
|4.||Erasing of existing child elements|
The XMLData interface works differently in the Authentic API from the way it works in the XMLSpy API, specifically if new elements are inserted into the XML file or existing elements are renamed. See the sections below named Creation and Insertion of New XMLData objects and Name and Value of Elements.
In order to use the XMLData interface, you must know how an existing XML file is mapped to an XMLData structure. One important point is this: XMLData has no separate objects for attributes; the attributes of an element are children of the element. An element can have other types of children (such as child elements and text content). The XMLData.Kind property gives you the opportunity to distinguish between the different types of children of an element. Given below is an example:
The following XML code,
<FirstChild attr1="Red" attr2="Black">
This is the value of FirstChild
This is Text
is mapped to the following XMLData object structure:
The parent of all XML elements inside a file is the property Authentic.XMLRoot. Use this XMLData object to get references to all other XML elements in the structure.
To get and modify the name and value of all types of XML elements, use the XMLData.Name and XMLData.TextValue properties. It is possible that several kinds of XMLData objects and empty elements do not have an associated text value. It is not recommended to change the name of an existing XML element in Authentic View because the name has a bearing on how Authentic View displays the content of the element. See the StyleVision documentation for information.
Create a new XMLData object (such as an element, attribute or text node) as follows:
1.Use the Authentic.CreateChild method to create a new XMLData object. Set the name and value of the new object before you insert it.
2.Insert the new object at the correct location with reference to its parent: (i) If the new child is to become the last child of the parent, use the XMLData.AppendChild method. (ii) To insert the new child elsewhere in the sequence of child objects, use either the XMLData.GetFirstChild or XMLData.GetNextChild method to locate the child before which the new child should be inserted; then insert the new child with XMLData.InsertChild. The new child will be inserted immediately before the current child.
|Note:||In Authentic View, a new element can be created together with its substructure because the element's structure is defined in the XML Schema. However, whether the substructure is created or not can be set in the node settings of the SPS. See the StyleVision documentation for information.|
The following example adds a third child between the <FirstChild> and <SecondChild> elements:
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
Set objNewChild = Nothing
An element's child nodes must be inserted in a specific order: insert the element's attributes first, then the element's child elements. Text content of an element must be added as a child node of type text; use Authentic.CreateChild with the parameter value 6. An element's text content is entered as the text value of the child node.
// this function returns a complete copy of the XMLData object
objNew = objPlugIn.CreateChild(objXMLData.Kind);
objNew.Name = objXMLData.Name;
objNew.TextValue = objXMLData.TextValue;
objChild = objXMLData.GetFirstChild(-1);
objChild = objXMLData.GetNextChild();
objChild = null;
XMLData provides two methods for removing child objects: XMLData.EraseAllChildren and XMLData.EraseCurrentChild. To remove XMLData objects, first access the parent of the elements you want to remove. Use XMLData.GetFirstChild" and XMLData.GetNextChild to get a reference to the parent XMLData object. See the method descriptions of XMLData.EraseAllChildren and XMLData.EraseCurrentChild for examples how to erase XML elements.