Доступ к данным характер CDATA в XML-элемента

Кроме того, элементы, определенные в DTD, XML имеет ряд уже предопределенный Ones. Эти комментарии, символьных данных (CDATA) и т.д. символьных данных текст непосредственно вставляются между начальным и конечным тегами элемента. Он может смешиваться с детьми отметил элементы.

Конкретная реализация SAX-анализатор определяет, будет ли он собирать все CDATA до перехода к обработчику или она передаст его там их возникновения.

Ниже пример определяет, как обрабатывать CDATA блоки:


import java.util.Stack;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;



import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;



/**

 * This example demonstrates how to extract text (CDATA) information

 * from the element in the source XML-document.

 */



public class SampleOfCDataAccess extends DefaultHandler {

  private Stack currentElement = new Stack();



  // we push current element name:

  public void startElement (String uri, String localName,

    String qName, Attributes attrsthrows SAXException {



    currentElement.push(qName);

  }



  public void endElement(String namespaceURI, String localName,

    String qNamethrows SAXException {



    currentElement.pop();

  }



  // this method will be called for each character-section occurred;

  // if the element containes several CDATA-sections mixed with

  // child elements the number of calls depends on SAX-implementation:

  public void characters(char[] ch, int start, int length)

    throws SAXException {



    String cdata = new String(ch, start, length);



    System.out.println("Element '" + currentElement.peek()

      "' contains text: " + cdata);

  }



  public static void main(String[] args) {

    try {

      // creates and returns new instance of SAX-implementation:

      SAXParserFactory factory = SAXParserFactory.newInstance();

      factory.setValidating(true);



      // create SAX-parser...

      SAXParser parser = factory.newSAXParser();





      parser.parse("sample.xml"new SampleOfCDataAccess());



    catch (Exception ex) {

      ex.printStackTrace(System.out);

    }

  }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>