XMLDocument2: Bereichsbezogen, Global

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 7 Minuten Lesedauer
  • Die XMLDocument2 API ist ein JavaScript-Objekt-Wrapper zum Analysieren und Extrahieren von XML-Daten aus einer XML-Zeichenfolge.

    Verwenden Sie diese JavaScript-Klasse, um ein Objekt aus einer XML-Zeichenfolge zu erstellen, normalerweise einen Rückgabewert eines Webserviceaufrufs oder die XML-Payload der ECC-Warteschlange. Wenn Sie das XMLDocument2-Objekt in einer JavaScript-Business Rule verwenden, können Sie Werte direkt aus den XML-Elementen und -Attributen abfragen.

    Eine XML-Zeichenfolge hat eine Baumstruktur, und die Teile der Struktur werden Knoten genannt. Ein XMLDocument2-Objekt verarbeitet zwei Knotentypen, Element und Dokumentelement. Ein Elementknoten ist ein Knoten mit einem Namen und möglicherweise Attributen und untergeordneten Knoten. Ein Dokumentelementknoten ist der Stammknoten des XML-Baums. Es ist der einzige Knoten ohne einen übergeordneten Knoten.

    Hinweis:
    Diese API funktioniert für bereichsbezogene oder globale Anwendungen.

    Scoped XMLDocument2 – XMLDocument2()

    Erstellt ein XMLDocument2-Objekt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Keine

    Scoped XMLDocument2 – XMLDocument2( GlideScriptableInputStream inputStream)

    Erstellt ein XMLDocument2-Objekt aus einem Anhang-Stream.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    inputStream GlideScriptableInputStream Eingabe-Stream, den das XMLDocument2-Objekt kapselt.

    Scoped XMLDocument2 – createElement(String name)

    Erzeugt einen Elementknoten und fügt ihn dem aktuellen Knoten hinzu. Der Elementname ist die als Parameter übergebene Zeichenfolge. Das neue Element hat keine untergeordneten Textknoten.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Name des neuen Elements.
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    XMLNode Aktueller XML-Knoten.
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    xmlDoc.createElement("new2"); 
     
    gs.info(xmlDoc);
    Ausgabe:
    ?xml version="1.0" encoding="UTF-8"?>
    <test>  
        <one>    
            <two att="xxx">abcd1234</two>    
                <three att="yyy" boo="yah">1234abcd</three>    
            <two>another</two>  
        </one>  
        <number>1234</number>
        <new2></new2>
    </test>

    Scoped XMLDocument2 – createElementWithTextValue(String name, String value)

    Erzeugt und einen Elementknoten und fügt ihn mit einem untergeordneten Textknoten zum aktuellen Knoten hinzu.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Name des hinzuzufügenden Elements.
    Wert Zeichenfolge Textwert des Elements.
    Tabelle : 6. Rückgaben
    Typ Beschreibung
    XMLNode Aktueller XML-Knoten.
    var xmlString = "<test>" +
        "  <one>" +
        "    <two att=\"xxx\">abcd1234</two>" +
        "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
        "    <two>another</two>" +
        "  </one>" +
        "  <number>1234</number>" +
        "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    xmlDoc.createElementWithTextValue("new", "test");
    gs.info(xmlDoc);
    Ausgabe:
    <?xml version="1.0" encoding="UTF-8"?>
        <test>
            <one>
                <two att="xxx">abcd1234</two>    
                <three att="yyy" boo="yah">1234abcd</three>    
                <two>another</two>  
            </one>  
            <number>1234</number>
            <new>test</new>
        </test>

    Scoped XMLDocument2 – getDocumentElement()

    Ruft den Dokumentelementknoten des XMLdocument2-Objekts ab. Der Dokumentelementknoten ist der Stammknoten.

    Tabelle : 7. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    XMLNode Dokumentelement.
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    //returns the root node of the document tree.
    var rootNode = xmlDoc.getDocumentElement();
    gs.info(rootNode.getTextContent());
    Ausgabe:
    abcd1234    1234abcd    another    1234

    Scoped XMLDocument2 – getFirstNode(String xPath)

    Ruft den ersten Knoten im angegebenen XPath ab.

    Diese Methode unterstützt nur eine Teilmenge von Prädikat-XPath-Ausdrücken. Nehmen Sie beispielsweise das folgende Dokument an:
    <store> 
        <resources company="ABC Inc"> 
            <resources type="servers" /> 
        </resources> 
        <resources company="XYZ Inc"> 
            <resource type="bookstore"> 
                <book> 
                    <title>Windows</title> 
                    <price>10</price> 
                </book> 
                <book year="2009"> 
                    <title>Harry Potter</title> 
                    <price>50</price> 
                </book> 
                <book year="1999"> 
                    <title>Learning XML</title> 
                    <price>120</price> 
                </book> 
                <book year="2019"> 
                    <title>Learning Java</title> 
                    <price>99</price> 
                </book> 
            </resource> 
        </resources> 
    </store> 
    Diese Methode unterstützt die folgenden XPath-Ausdrücke mit Prädikaten:
    "/store/resources/resource[@type='bookstore']/book[@year='1999']", 
    "/store/resources/resource[@type='bookstore']/book[@year]", 
    "/store/resources/resource[@type='bookstore']/book[price > 100]" 
    Die folgenden XPath-Ausdrücke mit Prädikaten werden jedoch nicht unterstützt:
    "/store/resources/resource[@type='bookstore']/book[2]", 
    "/store/resources/resource[@type='bookstore']/book[last()]", 
    "/store/resources/resource[@type='bookstore']/book[position()>2]" 

    Um dies zu umgehen, verwenden Sie XPath ohne Prädikate, z. B. „/Store/resources/resource[@type='bookstore']/book“) Und filtern Sie dann die Knoten im Skript mit GetFirstNode() Und GetNextNode() Methoden.

    Tabelle : 9. Parameter
    Name Typ Beschreibung
    xPath Zeichenfolge Der XPath, von dem der Knoten abgerufen werden soll.
    Tabelle : 10. Rückgaben
    Typ Beschreibung
    XMLNode Erster Knoten.
    var xmlString = "<test>" +
      "  <one>" +
      "    <two att=\"xxx\">abcd1234</two>" +
      "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
      "    <two>another</two>" +
      "  </one>" +
      "  <number>1234</number>" +
      "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    var foo = xmlDoc.getFirstNode('/test/one/two');
    gs.info(foo.getTextContent());
    Ausgabe:
    abcd1234

    Scoped XMLDocument2 – getNextNode(Object current)

    Ruft den Knoten nach dem angegebenen Knoten ab.

    Tabelle : 11. Parameter
    Name Typ Beschreibung
    current Objekt Aktueller Knoten.
    Tabelle : 12. Ergebnisse
    Typ Beschreibung
    XMLNode Nächster Knoten.
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    var foo = xmlDoc. getFirstNode('/test/one/two');
    var foo2 = xmlDoc.getNextNode(foo);
    gs.info(foo.getTextContent());
    gs.info(foo2.getTextContent());
    Ausgabe:
    abcd1234
    
    another

    Scoped XMLDocument2 – getNode(String xPath)

    Ruft den im XPath angegebenen Knoten ab.

    Hinweis:
    Diese Methode ist für die Verwendung mit kleinen Dokumenten vorgesehen, da sie das gesamte Dokument so analysiert, dass es dem XPath-Ausdruck entspricht. Wenn das Dokument zu groß ist, kann ein Fehler zu wenig Arbeitsspeicher auftreten. Verwenden Sie für große Dokumente GetFirstNode(Zeichenfolgen-XPath) Und GetNextNode (aktuelles Objekt) Methoden, die so konzipiert sind, dass sie das Dokument durchlaufen, ohne das gesamte Dokument zu analysieren.
    Tabelle : 13. Parameter
    Name Typ Beschreibung
    xPath Zeichenfolge XPath des abzurufenden Knotens.
    Tabelle : 14. Rückgaben
    Typ Beschreibung
    XMLNode Aktueller XML-Knoten.
    /*
     * Checks if given node indeed of given tag.
     * Params:
     *  tag - String, name of tag to check
     *  node - XMLNode, node in which to check for the tag
     * Returns:
     *  true, if tag is present
     *  false, otherwise
     */
    function isNodeOfTag (node, tag) {
      try {
        if (tag == node.getNodeName()) {
          gs.info("Given node belongs to tag " + tag);
          return true;
        }
      } catch (error) {
        gs.error("Given node might not belong to tag " + tag + ". Error while checking: " + error);
        return false;
      }
    }
    
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    
    var node = xmlDoc.getNode("/test/one/two"); // tag 'two' is present in this XML.
    isNodeOfTag(node, "two");
    
    var node = xmlDoc.getNode("/test/one/four"); // tag 'four' is not present in this XML.
    isNodeOfTag(node, "four");
    Ausgabe:
    Given node belongs to tag two
    Given node might not belong to tag four. Error while checking: java.lang.NullPointerException

    Scoped XMLDocument2 – getNodeText(String xPath)

    Ruft alle untergeordneten Textknoten aus dem Knoten ab, auf den im angegebenen XPath verwiesen wird.

    Tabelle : 15. Parameter
    Name Typ Beschreibung
    xPath Zeichenfolge XPath des abzurufenden Texts.
    Tabelle : 16. Rückgaben
    Typ Beschreibung
    Zeichenfolge Untergeordnete Textelemente im XPath.
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    gs.info(xmlDoc.getNodeText("//two"));

    Ausgabe:

    abcd1234

    Scoped XMLDocument2 – parseXML(String xmlDoc)

    Analysiert die XML-Zeichenfolge und lädt sie in das XMLDocument2-Objekt.

    Tabelle : 17. Parameter
    Name Typ Beschreibung
    xmlDoc Zeichenfolge Zu analysierendes Dokument.
    Tabelle : 18. Ergebnisse
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob der Inhalt analysiert wurde.

    In diesem Beispiel wird der xmlString analysiert und in das xmlDocument2-Objekt geladen.

    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString); 
    var rootNode = xmlDoc.getDocumentElement();

    Scoped XMLDocument2 – setCurrentElement(XMLNode element)

    Macht den als Parameter übergebenen Knoten zum aktuellen Knoten.

    Tabelle : 19. Parameter
    Name Typ Beschreibung
    element XMLNode Elementknoten, der als aktueller Knoten festgelegt werden soll.
    Tabelle : 20. Ergebnisse
    Typ Beschreibung
    void
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    //returns the root node of the document tree.
    var rootNode = xmlDoc.getDocumentElement(); //returns org.w3c.dom.Element
    // sets the root node as the current element
    xmlDoc.setCurrentElement(rootNode);

    Bereichsbezogenes XMLDocument2 – setEnableCDATAReporting (boolesche Aktivierung)

    Legt fest, ob Knoten nach der Analyse als CDATA- oder regulärer Text behandelt werden. CDATA-Berichterstellung ist standardmäßig deaktiviert.

    Diese Methode muss mit aufgerufen werden Scoped XMLDocument2 – parseXML(String xmlDoc).

    Siehe auch: Bereichsbezogener XMLNode – isCDATANode().

    Tabelle : 21. Parameter
    Name Typ Beschreibung
    enable Boolean Kennzeichnung, die angibt, ob CDATA-Knoten als CDATA- oder reguläre Textknoten behandelt werden sollen.
    Gültige Werte:
    • Wahr: Aktivieren Sie das CDATA-Reporting.
    • Falsch: Behandeln Sie CDATA-Knoten nach der Analyse als reguläre Textknoten, und verketten Sie sie mit dem angrenzenden Text.

    Standardwert: False

    Tabelle : 22. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Beispiel zeigt, wie CDATA in einem Element analysiert wird, wenn CDATA-Berichterstellung aktiviert ist. Das Ergebnis von Content.getFirstChild() Ist ein Element, das den Textwert enthält Eine andere . Dieses Element enthält intern die Informationen, die es als CDATA-Typ identifizieren. Das Ergebnis von Content.getLastChild() Ist ein Element, das den Textwert enthält Element . Dieses Element enthält die Informationen intern als Texttyp.

    var xmlString = "<test>" +
      "  <one>" +
      "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
      "    <two><![CDATA[another]]>element</two>" +
      "  </one>" +
      "  <number>1234</number>" 
      "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.setEnableCDATAReporting(true); // Enable CDATA reporting
    xmlDoc.parseXML(xmlString);
    var content = xmlDoc.getFirstNode('/test/one/two');
    gs.info(content.getFirstChild().getTextContent()); // prints "another"
    gs.info(content.getLastChild().getTextContent()); // prints "element"

    Ausgabe:

    another
    element
    Hinweis:
    Ohne aktiviertes CDATA-Reporting im Beispiel verkettet das gesamte untergeordnete Element die CDATA als Text mit dem Rest des Texts ( Element ) In jeder Zeile wie folgt:
    anotherelement
    anotherelement

    Scoped XMLDocument2 – setNamespaceAware(Boolean aware)

    Bei der Einstellung „true“ verarbeitet das XMLDocument2-Objekt das Dokument mit XML-Namespaces.

    Wenn Sie dies nicht festlegen, wird ein XML-Dokument mit Namespaces nicht ordnungsgemäß aufgelistet, und eine XPath-Suche schlägt fehl. 

    Tabelle : 23. Parameter
    Name Typ Beschreibung
    aware Boolean Bei „true“ verarbeitet das XMLDocument2-Objekt das Dokument mit XML-Namespaces.
    Tabelle : 24. Ergebnisse
    Typ Beschreibung
    void

    Scoped XMLDocument2 – toString()

    Gibt eine Zeichenfolge mit XML zurück.

    Tabelle : 25. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 26. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Zeichenfolge mit XML.
    var xmlString = "<test>" +
                    "  <one>" +
                    "    <two att=\"xxx\">abcd1234</two>" +
                    "    <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +
                    "    <two>another</two>" +
                    "  </one>" +
                    "  <number>1234</number>" +
                    "</test>";
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(xmlString);
    gs.info(xmlDoc.toString());
    Ausgabe – Zeilenumbrüche wurden zur besseren Lesbarkeit der Ausgabe hinzugefügt.
    <?xml version="1.0" encoding="UTF-8"?>
    <test>  
    <one>    
    <two att="xxx">abcd1234</two>    
    <three att="yyy" boo="yah">1234abcd</three>    
    <two>another</two>  
    </one>  
    <number>1234</number>
    </test>