XMLSpy API

Über die XMLData-Schnittstelle haben Sie Zugriff auf die gesamte XML-Struktur, die dem aktuellen Dokument zugrunde liegt. Sie benötigen dafür weniger Methoden als DOM und der Zugriff ist einfacher. Die XMLData-Schnittstelle ist eine möglichst einfache Methode, um vorhandene oder neu erstellte XML-Daten zu lesen und zu bearbeiten. Eventuell sollten Sie jedoch eine DOM-Struktur verwenden, weil Sie auf diese von einer externen Quelle aus zugreifen können oder weil Sie die MSXML DOM-Implementierung vorziehen.

 

Die unten gezeigten Funktionen ProcessDOMNode() und ProcessXMLDataNode() konvertieren alle Segmente einer XML-Struktur zwischen XMLDataund DOM.

 

Um die ProcessDOMNode() Funktion zu verwenden:

übergeben Sie das Root-Element des zu konvertierenden DOM-Segments in objNode und

übergeben Sie das Plugin-Objekt mit der CreateChild() Methode in objCreator

 

Um die ProcessXMLDataNode() Funktion zu verwenden:

übergeben Sie das Root-Element des XMLData-Segments in objXMLData und

übergeben Sie das mit MSXML in xmlDoc erstellte DOMDocument

 

Konvertieren von DOM in XMLData

 

////////////////////////////////////////////////////////////////

// DOM To XMLData conversion

Function ProcessDOMNode(objNode,objCreator)

{

 var objRoot;

 objRoot = CreateXMLDataFromDOMNode(objNode,objCreator);

 

 If(objRoot)        {                

         If((objNode.nodeValue != Null) && (objNode.nodeValue.length > 0))

                 objRoot.TextValue = objNode.nodeValue;

                 // add attributes

         If(objNode.attributes) {

                 var Attribute;

                 var oNodeList = objNode.attributes;

                 

                 For(var i = 0;i < oNodeList.length; i++) {

                         Attribute = oNodeList.item(i);

                         

                         var newNode;

                         newNode = ProcessDOMNode(Attribute,objCreator);

                         

                         objRoot.AppendChild(newNode);

                 }

         }

         If(objNode.hasChildNodes)        {

                 try {

                         // add children

                         var Item;

                         oNodeList = objNode.childNodes;

                         

                         For(var i = 0;i < oNodeList.length; i++) {

                                         Item = oNodeList.item(i);

                                       

                                 var newNode;

                                 newNode = ProcessDOMNode(Item,objCreator);

                                 

                                 objRoot.AppendChild(newNode);

                         }

                 }

                 catch(err) {

                 }

         }

 }

 Return objRoot;

}

 

Function CreateXMLDataFromDOMNode(objNode,objCreator)

{

 var bSetName = True;

 var bSetValue = True;

 

 var nKind = 4;

 

 switch(objNode.nodeType)        {

         Case 2:nKind = 5;break;

         Case 3:nKind = 6;bSetName = False;break;

         Case 4:nKind = 7;bSetName = False;break;

         Case 8:nKind = 8;bSetName = False;break;

         Case 7:nKind = 9;break;

 }

 var objNew = Null;

 objNew = objCreator.CreateChild(nKind);        

 

 If(bSetName)

         objNew.Name = objNode.nodeName;

 

 If(bSetValue && (objNode.nodeValue != Null))

         objNew.TextValue = objNode.nodeValue;

                 

 Return objNew;

}

 

 

Konvertieren von XMLData in DOM

 

////////////////////////////////////////////////////////////////

// XMLData To DOM conversion

 

Function ProcessXMLDataNode(objXMLData,xmlDoc)

{

 var objRoot;

 objRoot = CreateDOMNodeFromXMLData(objXMLData,xmlDoc);

 

 If(objRoot)        {                

         If(IsTextNodeEnabled(objRoot) && (objXMLData.TextValue.length > 0))

                 objRoot.appendChild(xmlDoc.createTextNode(objXMLData.TextValue));

         

         If(objXMLData.HasChildren)        {

                 try {

                         var objChild;

                         objChild = objXMLData.GetFirstChild(-1);

                 

                         While(True)        {

                                 If(objChild)        {

                                         var newNode;

                                         newNode = ProcessXMLDataNode(objChild,xmlDoc);

                                         

                                         If(newNode.nodeType == 2)        {

                                                 // child node is an attribute

                                                 objRoot.attributes.setNamedItem(newNode);

                                         }

                                         Else

                                                 objRoot.appendChild(newNode);

                                 }

                                 objChild = objXMLData.GetNextChild();

                         }

                 }

                 catch(err) {

                 }

         }

 }

 Return objRoot;

}

 

Function CreateDOMNodeFromXMLData(objXMLData,xmlDoc)

{

 switch(objXMLData.Kind)        {

         Case 4:Return xmlDoc.createElement(objXMLData.Name);

         Case 5:Return xmlDoc.createAttribute(objXMLData.Name);

         Case 6:Return xmlDoc.createTextNode(objXMLData.TextValue);

         Case 7:Return xmlDoc.createCDATASection(objXMLData.TextValue);

         Case 8:Return xmlDoc.createComment(objXMLData.TextValue);

         Case 9:Return xmlDoc.createProcessingInstruction(objXMLData.Name,objXMLData.TextValue);

 }

 

 Return xmlDoc.createElement(objXMLData.Name);

}

Function IsTextNodeEnabled(objNode)

{

 switch(objNode.nodeType) {

         Case 1:

         Case 2:

         Case 5:

         Case 6:

         Case 11:Return True;

 }

 Return False;

}

 

© 2019-2025 Altova GmbH