我正在尝试在名为Enterprise Architect ver 13.0.1310(编辑器:Sparx Systems)的产品中编写脚本(JavaScript)。 Enterprise Architect旨在管理UML模型。
Sparx Systems表示,Enterprise Architect具有内置的SpiderMonkey Javascript 1.8引擎。
但是,当我尝试执行parentNode.appendChild(childNode)时,EA表示该函数appendChild()不存在。


有人知道如何使用SpiderMonkey 1.8处理XML DOM吗?
有人知道我该怎么做吗
SpiderMonkey 1.8中的appendChild(childnode)?也许另一个
功能?
在哪里可以找到参考和可用功能
SpiderMonkey 1.8吗?
您是否有一些脚本示例(JAVASCRIPT)为
SpiderMonkey 1.8吗?

最好的祝福


这是JScript(不是JavaScript)中在Enterprise Architect中无缝运行的代码:

// ==========================================
//  GLOBAL DEFINITIONS
// ==========================================
var DIAGRAM_OT        = 8;

var SEARCH_SPECIFICATION = "<ReportViewData>" +
                            "<Fields>" +
                            "<Field name=\"CLASSGUID\" />" +
                            "<Field name=\"CLASSTABLE\" />" +
                            "<Field name=\"CLASSTYPE\" />" +
                            "<Field name=\"ID\" />" +
                            "<Field name=\"Name\" />" +
                            "<Field name=\"Type\" />" +
                            "<Field name=\"Stéréotype\" />" +
                            "<Field name=\"Notes\" />" +
                            "<Field name=\"Source\" />" +
                            "<Field name=\"Type_Source\" />" +
                            "<Field name=\"Destination\" />" +
                            "<Field name=\"Type_Destination\" />" +
                            "<Field name=\"Direction\" />" +
                            "<Field name=\"Source Aggregation\" />" +
                            "<Field name=\"Source Cardinality\" />" +
                            "<Field name=\"Source Role\" />" +
                            "<Field name=\"Destination Aggregation\" />" +
                            "<Field name=\"Destination Cardinality\" />" +
                            "<Field name=\"Destination Role\" />" +
                            "</Fields>" +
                            "<Rows/>" +
                            "</ReportViewData>";


function ListDiagramConnectors() {

    var treeSelectedType;
    var theDiagram as EA.Diagram;
    var xmlDOM;

    /*
    * Vérifie que la fenetre "System Output" (Console) est visible.
    * Ouvre la fenetre "System Output" (Console) si nécessaire.
    */
    Repository.EnsureOutputVisible( "Script" );

    Session.Output( "JScript: List Diagram Relationships" );
    Session.Output( "=========================================" );



    treeSelectedType = Repository.GetTreeSelectedItemType();


    switch ( treeSelectedType )
    {

        case DIAGRAM_OT:
        {

            theDiagram = Repository.GetTreeSelectedObject();


            xmlDOM = creerEtRetournerXMLDOM();

            Session.Output( "Working on diagram '" + theDiagram.Name + "' (Type=" +
            theDiagram.Type + ", ID=" + theDiagram.DiagramID + ")" );


            /* ***************************************************************************/
            /* function XMLDOM.loadXML(String pXML) :
             * Fonction JScript.
             * charge un fichier XML fourni
             * sous forme de String dans un XMLDOM.
             * @pXML : String : contenu XML.
             * @return : boolean : true si le chargement dans le DOM s'est bien déroulé.
             */
            /* ***************************************************************************/
            /* Charge la structure fournie dans la String
             * SEARCH_SPECIFICATION dans le DOM XML xmlDOM. */
            if( xmlDOM.loadXML(SEARCH_SPECIFICATION) )
            {

                /* Se positionne sur la racine des enregistrements ROWS dans le DOM. */
                var nodeRows = xmlDOM.selectSingleNode( "//ReportViewData//Rows" );

                /*
                 * Un connecteur a une relation un-a-plusieurs avec t_diagram.
                 * [t_connector] - [t_diagramlinks] - [t_diagram].
                 * Un connecteur peut apparaitre sur plusieurs diagrammes.
                 * L'objet DiagramLink représente une instance d'un connecteur sur un diagramme (lien).
                 * Un DIagramLink contient des propriétés comme la visibilité du connecteur, sa géométrie, ...
                 */
                // Récupère la EA.Collection de liens diagramLinks
                // pour le diagramme sélectionné dans le Project Browser.
                var diagramLinks as EA.Collection;
                diagramLinks = theDiagram.DiagramLinks;

                /* ************************************************** */
                /* PARCOURS D'UNE EA.COLLECTION EN JScript : INDICE.  */
                /* ************************************************** */
                for ( var i = 0 ; i < diagramLinks.Count ; i++ )
                {
                    /* Récupère le lien EA.DiagramLink en cours. */
                    var currentLink as EA.DiagramLink;
                    currentLink = diagramLinks.GetAt( i );

                    /* Récupère le connecteur dans le lien. */
                    var correspondingConnector as EA.Connector;
                    correspondingConnector = Repository.GetConnectorByID( currentLink.ConnectorID );

                    /* Ajoute un enregistrement (ROW) correspondant au connecteur
                     * sous la balise Rows. */
                    AddRow(xmlDOM, nodeRows, correspondingConnector);
                }

                /* **************************************************************** */
                /* Fonction EA RepositoryRunModelSearch( "", "", "", xmlDOM.xml ) : */
                /* **************************************************************** */
                /* Ouvre et Remplit la fenetre de Requete 'Find In Project'. */
                Repository.RunModelSearch( "", "", "", xmlDOM.xml );

            }
            else
            {
                Session.Prompt( "Impossible de charger SEARCH_SPECIFICATION", 0 );
            }

            break;
        }
        default:
        {
            // Error message
            Session.Prompt( "Ce script ne fonctionne que si vous sélectionnez un DIAGRAMME dans le Project Browser", 0 );
        }
    }

    Session.Output( "FINI !" );

} // Fin de function ListDiagramConnectors().__________________________________________________________________



/*
 * **********************************************************************************
 * function creerEtRetournerXMLDOM() :
 * CREATION D'UN XMLDOM en JScript. - new ActiveXObject( "MSXML2.DOMDocument.4.0" )
 *
 * @return : Document Object Model (DOM).
 */
function creerEtRetournerXMLDOM() {

    var xmlDOM;

    xmlDOM = new ActiveXObject( "MSXML2.DOMDocument.4.0" );
    xmlDOM.validateOnParse = false;
    xmlDOM.async = false;

    return xmlDOM;

} // Fin de function creerEtRetournerXMLDOM()._________________________________________



/*
 * *************************************************************************************
 * function AddRow(pXmlDOM, pRacineEnregistrements, pConnector) :
 * Ajoute un enregistrement (balise ROW) correspondant à un connecteur pConnector
 * sous le noeud pRacineEnregistrements du DOM pXmlDOM.
 *
 * @pXmlDOM : DOM XML.
 * @pRacineEnregistrements : node (balise) sous laquelle il faut insérer
 * les enregistrements dans le DOM pXmlDOM.
 * @pConnector : EA.Connector : Connecteur dont on veut ajouter
 * les caractéristiques dans le DOM XML.
 */
function AddRow(pXmlDOM, pRacineEnregistrements, pConnector) {

    /* Cast le paramètre pConnector pour bénéficier
     * de la complétion (intellisense). */
    var connector as EA.Connector;

    connector = pConnector;

    var row;
    var source as EA.Element; /* Source du connecteur. */
    var sourceEnd as EA.ConnectorEnd; /* ???  Semble contenir les propriétés (cardinalité, ...) du coté source du connecteur. */
    var destination as EA.Element;  /* Destination du connecteur. */
    var destinationEnd as EA.ConnectorEnd; /* ???  Semble contenir les propriétés (cardinalité, ...) du coté destination du connecteur. */
    var guid = ""; /* ConnectorGUID. */
    var type = ""; /* Connector_Type. */
    var id = ""; /* Connector_ID. */
    var nom = ""; /* Nom du Connecteur. */
    var stereotype = ""; /* Stéréotype du Connecteur. */
    var notes = ""; /* Notes du Connecteur. */
    var direction = ""; /* Direction du Connecteur; */

    /* Crée un élément (balise) "ROW". */
    /* FONCTION JScript createElement("Row"). */
    row = pXmlDOM.createElement("Row");

    /* Récupère les caractéristiques du connecteur. */
    guid = connector.ConnectorGUID;
    type = connector.MetaType;
    nom = connector.Name;
    id = connector.ConnectorID;
    stereotype = connector.Stereotype;
    notes = connector.Notes;
    direction = connector.Direction;

    /* Récupère les caractéristiques de la source du connecteur. */
    source = Repository.GetElementByID( connector.ClientID );
    sourceEnd = connector.ClientEnd;

    /* Récupère les caractéristiques de la destination du connecteur. */
    destination = Repository.GetElementByID( connector.SupplierID );
    destinationEnd = connector.SupplierEnd;

    /* *********************************************** */
    /* CONSTITUTION D'UN ENREGISTREMENT (ROW). */
    /* *********************************************** */
    /* Ajoute toutes les caractéristiques du connecteur
     * dans des balises sous un noeud ROW. */
    AddField( pXmlDOM, row, "CLASSGUID", guid );
    AddField( pXmlDOM, row, "CLASSTABLE", "t_connector" );
    AddField( pXmlDOM, row, "CLASSTYPE", type );
    AddField( pXmlDOM, row, "ID", id );
    AddField( pXmlDOM, row, "Name", nom );
    AddField( pXmlDOM, row, "Type", type );
    AddField( pXmlDOM, row, "Stereotype", stereotype );
    AddField( pXmlDOM, row, "Notes", notes );
    AddField( pXmlDOM, row, "Source", source.Name );
    AddField( pXmlDOM, row, "Type_Source", source.MetaType );
    AddField( pXmlDOM, row, "Destination", destination.Name );
    AddField( pXmlDOM, row, "Type_Destination", destination.MetaType );
    AddField( pXmlDOM, row, "Direction", direction );
    AddField( pXmlDOM, row, "Source Aggregation", sourceEnd.Aggregation );
    AddField( pXmlDOM, row, "Source Cardinality", sourceEnd.Cardinality );
    AddField( pXmlDOM, row, "Source Role", sourceEnd.Role );
    AddField( pXmlDOM, row, "Destination Aggregation", destinationEnd.Aggregation );
    AddField( pXmlDOM, row, "Destination Cardinality", destinationEnd.Cardinality );
    AddField( pXmlDOM, row, "Destination Role", destinationEnd.Role );


    /* Ajoute un noeud ROW sous la racine des enregistrements. */
    pRacineEnregistrements.appendChild( row );

} // Fin de function AddRow(pXmlDOM, pRacineEnregistrements, pConnector).__________________________




/*
 * **************************************************************************************************
 * AJOUT D'UNE BALISE (ELEMENT) EN JScript.
 * **************************************************************************************************
 * function AddField(pXmlDOM, pRow, pNomDuChamp, pValeurDuChamp) :
 * Ajoute un Element (balise) 'Field' à l'Element pRow d'un DOM pXmlDOM.
 * Ajoute deux attributs 'name' et 'value' à l'Element 'Field ajouté.
 * Fixe la valeur des attributs ajoutés à pNomDuChamp et pValeurDuChamp comme suit :
 * <Field name="pNomDuChamp" value="pValeurDuChamp"/>.
 * Par exemple :
 * <Field name="Stereotype" value="Realization"/>.
 *
 * @pXmlDOM : Document Objet Model (DOM).
 * @pRow : Node : Balise (Element) de pXmlDOM à laquelle on ajoute l'Element 'Field' créé.
 * @pNomDuChamp : String : valeur à attribuer à l'attribut 'name' de l'Element 'Field' créé.
 * @pValeurDuChamp : String : valeur à attribuer à l'attribut 'value' de l'Element 'Field' créé.
 */
function AddField(pXmlDOM, pRow, pNomDuChamp, pValeurDuChamp) {

    /* Crée une balise (Element) 'Field'. */
    var fieldNode = pXmlDOM.createElement("Field");

    /* Crée un premier attribut 'name'. */
    var nameAttribute = pXmlDOM.createAttribute("name");
    /* passe la valeur pNomDuChamp à l'attribut 'name'. */
    nameAttribute.value = pNomDuChamp;
    /* Ajoute l'attribut valué 'name' à la collection d'attributs de la balise 'Field'. */
    fieldNode.attributes.setNamedItem(nameAttribute);

    /* Crée un second attribut 'value'. */
    var valueAttribute = pXmlDOM.createAttribute("value");
    /* passe la valeur pValeurDuChamp à l'attribut 'value'. */
    valueAttribute.value = pValeurDuChamp;
    /* Ajoute l'attribut valué 'value' à la collection d'attributs de la balise 'Field'. */
    fieldNode.attributes.setNamedItem(valueAttribute);

    /* Ajoute la balise 'Field' nouvellement créée comme enfant de pRow. */
    pRow.appendChild( fieldNode );

} // Fin de function AddField(pXmlDOM, pRow, pNomDuChamp, pValeurDuChamp)._________________




ListDiagramConnectors();
</code>


这是相同脚本的代码,但使用JavaScript。由于未定义函数appendChild(childNode),因此该代码无法在Enterprise Architect 13.0.1310中运行:

<code>
// ==========================================
//  GLOBAL DEFINITIONS
// ==========================================
/* Object_type d'un Diagram == 8 dans EA. */
var DIAGRAM_OT        = 8;


/* String XML qui définit les champs qui apparaitront
 * dans la fenetre 'Find In Project'
 * et la forme d'un fichier XML correspondant à une requete Search. */
var SEARCH_SPECIFICATION = "<ReportViewData>" +
                            "<Fields>" +
                            "<Field name=\"CLASSGUID\" />" +
                            "<Field name=\"CLASSTABLE\" />" +
                            "<Field name=\"CLASSTYPE\" />" +
                            "<Field name=\"ID\" />" +
                            "<Field name=\"Name\" />" +
                            "<Field name=\"Type\" />" +
                            "<Field name=\"Stéréotype\" />" +
                            "<Field name=\"Notes\" />" +
                            "<Field name=\"Source\" />" +
                            "<Field name=\"Type_Source\" />" +
                            "<Field name=\"Destination\" />" +
                            "<Field name=\"Type_Destination\" />" +
                            "<Field name=\"Direction\" />" +
                            "<Field name=\"Source Aggregation\" />" +
                            "<Field name=\"Source Cardinality\" />" +
                            "<Field name=\"Source Role\" />" +
                            "<Field name=\"Destination Aggregation\" />" +
                            "<Field name=\"Destination Cardinality\" />" +
                            "<Field name=\"Destination Role\" />" +
                            "</Fields>" +
                            "<Rows/>" +
                            "</ReportViewData>";




/*
 * ***************************************************************************************************
 * function ListDiagramConnectors() :
 * Main function.
 * Liste l'ensemble des connecteurs présents dans un diagramme sélectionné dans le Project Browser.
 * Le résultat est affiché dans la fenetre de Requete 'Find In Project'.
 * Cette fenetre 'Find In Project' s'ouvre automatiquement.
 */
function ListDiagramConnectors() {

    var treeSelectedType;
    var theDiagram as EA.Diagram;
    var xmlDOM;

    /*
    * Vérifie que la fenetre "System Output" (Console) est visible.
    * Ouvre la fenetre "System Output" (Console) si nécessaire.
    */
    Repository.EnsureOutputVisible( "Script" );

    Session.Output( "JScript: List Diagram Relationships" );
    Session.Output( "=========================================" );


    /* ********************************************************************** */
    /* RECUPERATION DU TYPE DE L'OBJET SELECTIONNE DANS LE PROJECT BROWSER.   */
    /* FONCTION EA13 Repository.GetTreeSelectedItemType().                    */
    /* ********************************************************************** */
    /* Récupère le type de l'objet sélectionné dans le Project Browser. */
    /* Ce type est un entier. */
    treeSelectedType = Repository.GetTreeSelectedItemType();

    /* ********************************* */
    /* SELECT CASE en JScript.           */
    /* ********************************* */
    /* Traitement du type d'objet sélectionné dans le Project Browser. */
    switch ( treeSelectedType )
    {
        /* Lorsqu'un diagramme est selectionné dans le ProjectBrowser. */
        case DIAGRAM_OT:
        {
            /* Récupération de l'objet sélectionné dans le Project Browser. */
            theDiagram = Repository.GetTreeSelectedObject();

            /* Récupère un Document Object Model (DOM). */
            xmlDOM = creerEtRetournerXMLDOM();

            Session.Output( "Working on diagram '" + theDiagram.Name + "' (Type=" +
            theDiagram.Type + ", ID=" + theDiagram.DiagramID + ")" );


            /* ***************************************************************************/
            /* function XMLDOM.loadXML(String pXML) :
             * Fonction JScript.
             * charge un fichier XML fourni
             * sous forme de String dans un XMLDOM.
             * @pXML : String : contenu XML.
             * @return : boolean : true si le chargement dans le DOM s'est bien déroulé.
             */
            /* ***************************************************************************/
            /* Charge la structure fournie dans la String
             * SEARCH_SPECIFICATION dans le DOM XML xmlDOM. */
            if( xmlDOM.loadXML(SEARCH_SPECIFICATION) )
            {

                /* Se positionne sur la racine des enregistrements ROWS dans le DOM. */
                var nodeRows = xmlDOM.selectSingleNode( "//ReportViewData//Rows" );

                /*
                 * Un connecteur a une relation un-a-plusieurs avec t_diagram.
                 * [t_connector] - [t_diagramlinks] - [t_diagram].
                 * Un connecteur peut apparaitre sur plusieurs diagrammes.
                 * L'objet DiagramLink représente une instance d'un connecteur sur un diagramme (lien).
                 * Un DIagramLink contient des propriétés comme la visibilité du connecteur, sa géométrie, ...
                 */
                // Récupère la EA.Collection de liens diagramLinks
                // pour le diagramme sélectionné dans le Project Browser.
                var diagramLinks as EA.Collection;
                diagramLinks = theDiagram.DiagramLinks;

                /* ************************************************** */
                /* PARCOURS D'UNE EA.COLLECTION EN JScript : INDICE.  */
                /* ************************************************** */
                for ( var i = 0 ; i < diagramLinks.Count ; i++ )
                {
                    /* Récupère le lien EA.DiagramLink en cours. */
                    var currentLink as EA.DiagramLink;
                    currentLink = diagramLinks.GetAt( i );

                    /* Récupère le connecteur dans le lien. */
                    var correspondingConnector as EA.Connector;
                    correspondingConnector = Repository.GetConnectorByID( currentLink.ConnectorID );

                    /* Ajoute un enregistrement (ROW) correspondant au connecteur
                     * sous la balise Rows. */
                    AddRow(xmlDOM, nodeRows, correspondingConnector);
                }

                /* **************************************************************** */
                /* Fonction EA RepositoryRunModelSearch( "", "", "", xmlDOM.xml ) : */
                /* **************************************************************** */
                /* Ouvre et Remplit la fenetre de Requete 'Find In Project'. */
                Repository.RunModelSearch( "", "", "", xmlDOM.xml );

            }
            else
            {
                Session.Prompt( "Impossible de charger SEARCH_SPECIFICATION", 0 );
            }

            break;
        }
        default:
        {
            // Error message
            Session.Prompt( "Ce script ne fonctionne que si vous sélectionnez un DIAGRAMME dans le Project Browser", 0 );
        }
    }

    Session.Output( "FINI !" );

} // Fin de function ListDiagramConnectors().__________________________________________________________________



/*
 * **********************************************************************************
 * function creerEtRetournerXMLDOM() :
 * CREATION D'UN XMLDOM en JavaScript. - new COMObject( "MSXML2.DOMDocument" )
 *
 * @return : Document Object Model (DOM).
 */
function creerEtRetournerXMLDOM() {

    var xmlDOM;

    xmlDOM = new COMObject( "MSXML2.DOMDocument" );
    xmlDOM.validateOnParse = false;
    xmlDOM.async = false;

    return xmlDOM;

} // Fin de function creerEtRetournerXMLDOM()._________________________________________



/*
 * *************************************************************************************
 * function AddRow(pXmlDOM, pRacineEnregistrements, pConnector) :
 * Ajoute un enregistrement (balise ROW) correspondant à un connecteur pConnector
 * sous le noeud pRacineEnregistrements du DOM pXmlDOM.
 *
 * @pXmlDOM : DOM XML.
 * @pRacineEnregistrements : node (balise) sous laquelle il faut insérer
 * les enregistrements dans le DOM pXmlDOM.
 * @pConnector : EA.Connector : Connecteur dont on veut ajouter
 * les caractéristiques dans le DOM XML.
 */
function AddRow(pXmlDOM, pRacineEnregistrements, pConnector) {

    /* Cast le paramètre pConnector pour bénéficier
     * de la complétion (intellisense). */
    var connector as EA.Connector;

    connector = pConnector;

    var row;
    var source as EA.Element; /* Source du connecteur. */
    var sourceEnd as EA.ConnectorEnd; /* ???  Semble contenir les propriétés (cardinalité, ...) du coté source du connecteur. */
    var destination as EA.Element;  /* Destination du connecteur. */
    var destinationEnd as EA.ConnectorEnd; /* ???  Semble contenir les propriétés (cardinalité, ...) du coté destination du connecteur. */
    var guid = ""; /* ConnectorGUID. */
    var type = ""; /* Connector_Type. */
    var id = ""; /* Connector_ID. */
    var nom = ""; /* Nom du Connecteur. */
    var stereotype = ""; /* Stéréotype du Connecteur. */
    var notes = ""; /* Notes du Connecteur. */
    var direction = ""; /* Direction du Connecteur; */

    /* Crée un élément (balise) "ROW". */
    /* FONCTION JavaScript createElement("Row"). */
    row = pXmlDOM.createElement("Row");

    /* Récupère les caractéristiques du connecteur. */
    guid = connector.ConnectorGUID;
    type = connector.MetaType;
    nom = connector.Name;
    id = connector.ConnectorID;
    stereotype = connector.Stereotype;
    notes = connector.Notes;
    direction = connector.Direction;

    /* Récupère les caractéristiques de la source du connecteur. */
    source = Repository.GetElementByID( connector.ClientID );
    sourceEnd = connector.ClientEnd;

    /* Récupère les caractéristiques de la destination du connecteur. */
    destination = Repository.GetElementByID( connector.SupplierID );
    destinationEnd = connector.SupplierEnd;

    /* *********************************************** */
    /* CONSTITUTION D'UN ENREGISTREMENT (ROW). */
    /* *********************************************** */
    /* Ajoute toutes les caractéristiques du connecteur
     * dans des balises sous un noeud ROW. */
    AddField( pXmlDOM, row, "CLASSGUID", guid );
    AddField( pXmlDOM, row, "CLASSTABLE", "t_connector" );
    AddField( pXmlDOM, row, "CLASSTYPE", type );
    AddField( pXmlDOM, row, "ID", id );
    AddField( pXmlDOM, row, "Name", nom );
    AddField( pXmlDOM, row, "Type", type );
    AddField( pXmlDOM, row, "Stereotype", stereotype );
    AddField( pXmlDOM, row, "Notes", notes );
    AddField( pXmlDOM, row, "Source", source.Name );
    AddField( pXmlDOM, row, "Type_Source", source.MetaType );
    AddField( pXmlDOM, row, "Destination", destination.Name );
    AddField( pXmlDOM, row, "Type_Destination", destination.MetaType );
    AddField( pXmlDOM, row, "Direction", direction );
    AddField( pXmlDOM, row, "Source Aggregation", sourceEnd.Aggregation );
    AddField( pXmlDOM, row, "Source Cardinality", sourceEnd.Cardinality );
    AddField( pXmlDOM, row, "Source Role", sourceEnd.Role );
    AddField( pXmlDOM, row, "Destination Aggregation", destinationEnd.Aggregation );
    AddField( pXmlDOM, row, "Destination Cardinality", destinationEnd.Cardinality );
    AddField( pXmlDOM, row, "Destination Role", destinationEnd.Role );


    /* Ajoute un noeud ROW sous la racine des enregistrements. */
    /* ************************************* */
    /* NE FONCTIONNE PAS EN JavaScript; !!!! */
    /* ************************************* */
    pRacineEnregistrements.appendChild( row );

} // Fin de function AddRow(pXmlDOM, pRacineEnregistrements, pConnector).__________________________




/*
 * **************************************************************************************************
 * AJOUT D'UNE BALISE (ELEMENT) EN JavaScript.
 * **************************************************************************************************
 * function AddField(pXmlDOM, pRow, pNomDuChamp, pValeurDuChamp) :
 * Ajoute un Element (balise) 'Field' à l'Element pRow d'un DOM pXmlDOM.
 * Ajoute deux attributs 'name' et 'value' à l'Element 'Field ajouté.
 * Fixe la valeur des attributs ajoutés à pNomDuChamp et pValeurDuChamp comme suit :
 * <Field name="pNomDuChamp" value="pValeurDuChamp"/>.
 * Par exemple :
 * <Field name="Stereotype" value="Realization"/>.
 *
 * @pXmlDOM : Document Objet Model (DOM).
 * @pRow : Node : Balise (Element) de pXmlDOM à laquelle on ajoute l'Element 'Field' créé.
 * @pNomDuChamp : String : valeur à attribuer à l'attribut 'name' de l'Element 'Field' créé.
 * @pValeurDuChamp : String : valeur à attribuer à l'attribut 'value' de l'Element 'Field' créé.
 */
function AddField(pXmlDOM, pRow, pNomDuChamp, pValeurDuChamp) {

    /* Crée une balise (Element) 'Field'. */
    var fieldNode = pXmlDOM.createElement("Field");

    /* Crée un premier attribut 'name' et lui passe sa valeur pNomDuChamp. */
    fieldNode.setAttribute("name", pNomDuChamp);

    /* Crée un second attribut 'value' et lui passe sa valeur pValeurDuChamp. */
    fieldNode.setAttribute("value", pValeurDuChamp);

    /* Ajoute la balise 'Field' nouvellement créée comme enfant de pRow. */
    /* ************************************* */
    /* NE FONCTIONNE PAS EN JavaScript; !!!! */
    /* ************************************* */
    pRow.appendChild(fieldNode);

} // Fin de function AddField(pXmlDOM, pRow, pNomDuChamp, pValeurDuChamp)._________________




ListDiagramConnectors();
</code>

最佳答案

有人知道如何使用SpiderMonkey 1.8处理XML DOM吗?


据我所知,Spidermonkey不具备此功能,因为它是为没有DOM的应用程序开发的


  在哪里可以找到参考和可用功能
  SpiderMonkey 1.8吗?
  您是否有一些为SpiderMonkey 1.8编写的脚本(JAVASCRIPT)示例?


因此,基本上,SpiderMonkey与JavaScript相同,但减去DOM Manipulation(和XML)


  有人知道我如何做与SpiderMonkey 1.8中的appendChild(childnode)相同的事情吗?也许另一个功能?


您将需要使用VBscript或Jscript(Jscript是Javascript的Microsoft实现)。

Here's an example Jscript

 main();

function main()
{
  var dom = MakeDOM(null);

  try {
    // Create a processing instruction targeted for xml.
    var node = dom.createProcessingInstruction("xml",
                                      "version='1.0'");
    dom.appendChild(node);
    node = null;
    ...


ea客户端的EAScriptLib组中有一个库

10-07 17:35