{
  void convertCdataSectionElements(Document doc, Node node, List list)  {    if (node.getNodeType() == Node.ELEMENT_NODE)      {        boolean match = false;        for (Iterator i = list.iterator(); i.hasNext(); )          {            QName qname = (QName) i.next();            if (match(qname, node))              {                match = true;                break;              }          }        if (match)          {            Node ctx = node.getFirstChild();            while (ctx != null)              {                if (ctx.getNodeType() == Node.TEXT_NODE)                  {                    Node cdata = doc.createCDATASection(ctx.getNodeValue());                    node.replaceChild(cdata, ctx);                    ctx = cdata;                  }                ctx = ctx.getNextSibling();              }          }      }    Node ctx = node.getFirstChild();    while (ctx != null)      {        if (ctx.hasChildNodes())          {            convertCdataSectionElements(doc, ctx, list);          }        ctx = ctx.getNextSibling();      }  }