---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# XMLDocument2 - com escopo, global

# XMLDocument2 - com escopo, global {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 8 min. de leitura

A API XMLDocument2 é um wrapper de objeto JavaScript para analisar e extrair dados XML de uma cadeia de caracteres XML.

Use esta classe JavaScript para criar um objeto a partir de uma cadeia de caracteres XML, geralmente um valor de retorno de uma invocação de serviço da Web ou a carga XML da Fila do ECC. O uso do objeto XMLDocument2 em uma regra de negócio JavaScript permite consultar valores diretamente dos elementos e atributos XML.

Uma cadeia de caracteres XML tem uma estrutura de árvore e as partes da estrutura são chamadas de nós. Um objeto XMLDocument2 lida com dois tipos de nó, elemento e elemento de documento. Um nó de elemento é um nó com um nome e possivelmente atributos e nós secundários. Um nó de elemento de documento é o nó raiz da árvore XML. É o único nó sem um nó primário.  
Nota:  
Esta API funciona para aplicações com escopo ou globais.

## XMLDocument2 com escopo - XMLDocument2() {#ariaid-title2}

Cria um objeto XMLDocument2.
{#r_ScopedXMLDocument2XMLDocument2__table_jqf_pkr_2r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 1. Parâmetros]

{#r_ScopedXMLDocument2XMLDocument2__table_jqf_pkr_2r}

## XMLDocument2 com escopo - XMLDocument2( GlideScriptableInputStream inputStream) {#ariaid-title3}

Cria um objeto XMLDocument2 a partir de um fluxo de anexos.
{#r_SXMLDoc2-XMLDocument2_GSIS__table_qjv_tmt_3x__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| fluxo de entrada | GlideScriptableInputStream | O fluxo de entrada que o objeto XMLDocument2 encapsula. |
[Tabela 2. Parâmetros]

{#r_SXMLDoc2-XMLDocument2_GSIS__table_qjv_tmt_3x}

## XMLDocument2 com escopo - createElement(String name) {#ariaid-title4}

Cria e adiciona um nó de elemento ao nó atual. O nome do elemento é a cadeia de caracteres passada como um parâmetro. O novo elemento não tem nós secundários de texto.
{#r_ScopedXMLDocument2CreateElement_String__table_plz_zr4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| nome | Cadeia de caracteres | O nome do novo elemento. |
[Tabela 3. Parâmetros]

{#r_ScopedXMLDocument2CreateElement_String__table_plz_zr4_1r} {#r_ScopedXMLDocument2CreateElement_String__table_efn_ffc_2r__entry__2}

| Tipo | Descrição |
|-|-|
| XMLNode | Nó XML atual. |
[Tabela 4. Retorna]

{#r_ScopedXMLDocument2CreateElement_String__table_efn_ffc_2r}  

    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);

Saída:

    ?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>

## XMLDocument2 com escopo - createElementWithTextValue(Nome da cadeia de caracteres, Valor da cadeia de caracteres) {#ariaid-title5}

Cria e adiciona um nó de elemento com um nó secundário de texto ao nó atual.
{#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_rxl_qs4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| nome | Cadeia de caracteres | Nome do elemento a ser adicionado. |
| valor | Cadeia de caracteres | Valor de texto do elemento. |
[Tabela 5. Parâmetros]

{#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_rxl_qs4_1r} {#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_txl_qs4_1r__entry__2}

| Tipo | Descrição |
|-|-|
| XMLNode | Nó XML atual. |
[Tabela 6. Retorna]

{#r_ScopedXMLDocument2CreateElementWithTextValue_String_String__table_txl_qs4_1r}  

    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);

Saída:

    <?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>

## XMLDocument2 com escopo - getDocumentElement() {#ariaid-title6}

Obtém o nó do elemento de documento do objeto XMLdocument2. O nó do elemento do documento é o nó raiz.
{#r_ScopedXMLDocument2GetDocumentElement__table_cvr_4kr_2r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 7. Parâmetros]

{#r_ScopedXMLDocument2GetDocumentElement__table_cvr_4kr_2r} {#r_ScopedXMLDocument2GetDocumentElement__table_t2h_k54_1r__entry__2}

| Tipo | Descrição |
|-|-|
| XMLNode | O elemento do documento. |
[Tabela 8. Retorna]

{#r_ScopedXMLDocument2GetDocumentElement__table_t2h_k54_1r}  

    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());

Saída:

    abcd1234    1234abcd    another    1234

## XMLDocument2 com escopo - getFirstNode(String xPath) {#ariaid-title7}

Obtém o primeiro nó no xPath especificado.
Este método só oferece suporte a um subconjunto de expressões xPath de predicado. Por exemplo, suponha o seguinte documento:

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

Este método é compatível com as seguintes expressões xPath com predicados:

    "/store/resources/resource[@type='bookstore']/book[@year='1999']", 
    "/store/resources/resource[@type='bookstore']/book[@year]", 
    "/store/resources/resource[@type='bookstore']/book[price > 100]" 

No entanto, ele não é compatível com as seguintes expressões xPath com predicados:

    "/store/resources/resource[@type='bookstore']/book[2]", 
    "/store/resources/resource[@type='bookstore']/book[last()]", 
    "/store/resources/resource[@type='bookstore']/book[position()>2]" 

Para contornar isso, use xPath sem predicados, como `"/store/resources/resource[@type='bookstore']/book") ` e filtre os nós no script usando os métodos getFirstNode() e [getNextNode()](https://servicenow-prod.fluidtopics.net/vPxhwdfQcYKu295FRT~wIA#r_ScopedXMLDocument2GetNextNode_Object "Obtém o nó após o nó especificado.").
{#r_ScopedXMLDocument2GetFirstNode_String__table_wg1_nq4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| xPath | Cadeia de caracteres | O xPath do qual o nó será obtido. |
[Tabela 9. Parâmetros]

{#r_ScopedXMLDocument2GetFirstNode_String__table_wg1_nq4_1r} {#r_ScopedXMLDocument2GetFirstNode_String__table_yg1_nq4_1r__entry__2}

| Tipo | Descrição |
|-|-|
| XMLNode | O primeiro nó. |
[Tabela 10. Retorna]

{#r_ScopedXMLDocument2GetFirstNode_String__table_yg1_nq4_1r}  

    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());

Saída:

    abcd1234

## XMLDocument2 com escopo - getNextNode(Object current) {#ariaid-title8}

Obtém o nó após o nó especificado.
{#r_ScopedXMLDocument2GetNextNode_Object__table_ysr_fr4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| atual | Objeto | O nó atual. |
[Tabela 11. Parâmetros]

{#r_ScopedXMLDocument2GetNextNode_Object__table_ysr_fr4_1r} {#r_ScopedXMLDocument2GetNextNode_Object__table_atr_fr4_1r__entry__2}

| Tipo | Descrição |
|-|-|
| XMLNode | O próximo nó. |
[Tabela 12. Retorna]

{#r_ScopedXMLDocument2GetNextNode_Object__table_atr_fr4_1r}  

    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());

Saída:

    abcd1234

    another

## XMLDocument2 com escopo - getNode(String xPath) {#ariaid-title9}

Obtém o nó especificado no xPath.
Nota:  
Este método deve ser usado com documentos pequenos, pois analisa o documento inteiro para corresponder à expressão xPath. Se o documento for muito grande, poderá ocorrer um erro de falta de memória. Para documentos grandes, use os [métodos getFirstNode(String xPath)](https://servicenow-prod.fluidtopics.net/vPxhwdfQcYKu295FRT~wIA#r_ScopedXMLDocument2GetFirstNode_String "Obtém o primeiro nó no xPath especificado.") e [getNextNode(Object current)](https://servicenow-prod.fluidtopics.net/vPxhwdfQcYKu295FRT~wIA#r_ScopedXMLDocument2GetNextNode_Object "Obtém o nó após o nó especificado."), que são projetados para transmitir o documento sem analisar o documento inteiro.
{#r_ScopedXMLDocument2GetNode_String__table_yhv_xp4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| xPath | Cadeia de caracteres | xPath do nó a ser obtido. |
[Tabela 13. Parâmetros]

{#r_ScopedXMLDocument2GetNode_String__table_yhv_xp4_1r} {#r_ScopedXMLDocument2GetNode_String__table_a3v_xp4_1r__entry__2}

| Tipo | Descrição |
|-|-|
| XMLNode | Nó XML atual. |
[Tabela 14. Retorna]

{#r_ScopedXMLDocument2GetNode_String__table_a3v_xp4_1r}  

    /*
     * 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");

Saída:

    Given node belongs to tag two
    Given node might not belong to tag four. Error while checking: java.lang.NullPointerException

## XMLDocument2 com escopo - getNodeText(String xPath) {#ariaid-title10}

Obtém todos os nós secundários de texto do nó referenciado no XPath especificado.
{#r_ScopedXMLDocument2GetNodeText_String__table_dgq_2p4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| xPath | Cadeia de caracteres | XPath do texto a ser obtido. |
[Tabela 15. Parâmetros]

{#r_ScopedXMLDocument2GetNodeText_String__table_dgq_2p4_1r} {#r_ScopedXMLDocument2GetNodeText_String__table_fgq_2p4_1r__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | Textos secundários no XPath. |
[Tabela 16. Retorna]

{#r_ScopedXMLDocument2GetNodeText_String__table_fgq_2p4_1r}  

    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"));

Saída:

    abcd1234

## XMLDocument2 com escopo - parseXML(String xmlDoc) {#ariaid-title11}

Analisa a cadeia de caracteres XML e a carrega no objeto XMLDocument2.
{#r_ScopedXMLDocument2ParseXML_String__table_rxk_n44_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| xmlDoc | Cadeia de caracteres | O documento a ser analisado. |
[Tabela 17. Parâmetros]

{#r_ScopedXMLDocument2ParseXML_String__table_rxk_n44_1r} {#r_ScopedXMLDocument2ParseXML_String__table_scn_y2c_2r__entry__2}

| Tipo | Descrição |
|-|-|
| Booliano | Sinalizador que indica se o conteúdo foi analisado. |
[Tabela 18. Retorna]

{#r_ScopedXMLDocument2ParseXML_String__table_scn_y2c_2r}  
Este exemplo analisa o xmlString e o carrega no objeto xmlDocument2.

    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();

## XMLDocument2 com escopo - setCurrentElement(elemento XMLNode) {#ariaid-title12}

Torna o nó passado como um parâmetro o nó atual.
{#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_rbn_wt4_1r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| elemento | XMLNode | O nó do elemento a ser definido como o nó atual. |
[Tabela 19. Parâmetros]

{#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_rbn_wt4_1r} {#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_pph_y2c_2r__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 20. Retorna]

{#r_ScopedXMLDocument2SetCurrentElement_XMLNode__table_pph_y2c_2r}  

    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);

## XMLDocument2 com escopo - setEnableCDATAReporting (booleano habilitado) {#ariaid-title13}

Define se os nós são tratados como CDATA ou texto normal após a análise. A emissão de relatórios de CDATA está desativada por padrão.
Este método deve ser chamado com [XMLDocument2 com escopo - parseXML(String xmlDoc)](https://servicenow-prod.fluidtopics.net/vPxhwdfQcYKu295FRT~wIA#r_ScopedXMLDocument2ParseXML_String "Analisa a cadeia de caracteres XML e a carrega no objeto XMLDocument2.").

Consulte também: [XMLNode com escopo - isCDATANode()](https://servicenow-prod.fluidtopics.net/S57yrqJ2PZ2d2QbVnagweQ#SXMLN_isCDATANode "Indica se o nó CDATA é preservado como um nó separado.").
{#SXMLD_setEnableCDATAReporting_B__table_bk3_rjy_3x__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| ativar | Booliano | Sinalizador que indica se os nós CDATA devem ser tratados como nós CDATA ou de texto normal. Valores válidos: * verdadeiro: habilitar a emissão de relatórios de CDATA. * falso: processa nós CDATA como nós de texto regulares após a análise e os concatena com o texto adjacente. {#SXMLD_setEnableCDATAReporting_B__ul_fj4_svh_lzb} Padrão: falso |
[Tabela 21. Parâmetros]

{#SXMLD_setEnableCDATAReporting_B__table_bk3_rjy_3x} {#SXMLD_setEnableCDATAReporting_B__table_ck3_rjy_3x__entry__2}

| Tipo | Descrição |
|-|-|
| Nenhum(a) |   |
[Tabela 22. Retorna]

{#SXMLD_setEnableCDATAReporting_B__table_ck3_rjy_3x}  
O exemplo a seguir mostra como o CDATA é analisado em um elemento com a emissão de relatórios de CDATA ativada. O resultado de content.getFirstChild() é um elemento que contém o valor de texto de outro. Este elemento contém internamente as informações que o identificam como um tipo CDATA. O resultado de content.getLastChild() é um elemento que contém o elementode valor de texto . Este elemento contém internamente as informações como um tipo de texto.

    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"

Saída:

    another
    element

Nota:  
Sem a emissão de relatórios de CDATA ativada no exemplo, o secundário inteiro concatena o CDATA como texto com o restante do texto (elemento) em cada linha da seguinte forma:

    anotherelement
    anotherelement

## XMLDocument2 com escopo - setNamespaceAware (booleano ciente) {#ariaid-title14}

Quando definido como verdadeiro, o objeto XMLDocument2 processa o documento com namespaces XML.
Se você não definir isso, um documento XML com namespaces não será enumerado corretamente e uma pesquisa XPath falhará.
{#r_SXML-setNamespaceAware_B__table_rfn_p4t_3x__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| ciente | Booliano | Quando verdadeiro, o objeto XMLDocument2 processa o documento com namespaces XML. |
[Tabela 23. Parâmetros]

{#r_SXML-setNamespaceAware_B__table_rfn_p4t_3x} {#r_SXML-setNamespaceAware_B__table_sfn_p4t_3x__entry__2}

| Tipo | Descrição |
|-|-|
| vazio |   |
[Tabela 24. Retorna]

{#r_SXML-setNamespaceAware_B__table_sfn_p4t_3x}

## XMLDocument2 com escopo - toString() {#ariaid-title15}

Retorna uma cadeia de caracteres que contém o XML.
{#r_ScopedXMLDocument2ToString__table_ody_nkr_2r__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| Nenhum |   |   |
[Tabela 25. Parâmetros]

{#r_ScopedXMLDocument2ToString__table_ody_nkr_2r} {#r_ScopedXMLDocument2ToString__table_lvt_x54_1r__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | Uma cadeia de caracteres que contém o XML. |
[Tabela 26. Retorna]

{#r_ScopedXMLDocument2ToString__table_lvt_x54_1r}  

    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());

Saída - quebras de linha foram adicionadas à saída para facilitar a leitura.

    <?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>


