Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.teleal.cling.support.contentdirectory
Class DIDLParser

    java.lang.Object
      org.teleal.common.xml.SAXParser
          org.teleal.cling.support.contentdirectory.DIDLParser

    public class DIDLParser

extends org.teleal.common.xml.SAXParser

DIDL parser based on SAX for reading and DOM for writing.

This parser requires Android platform level 8 (2.2).

Override the `createDescMetaHandler(org.teleal.cling.support.model.DescMeta , org.teleal.common.xml.SAXParser.Handler)` method to read vendor extension content of `<desc>` elements. You then should also override the `populateDescMetadata(org.w3c.dom.Element, org.teleal.cling.support.model.DescMeta)` method for writing.

Override the `createItemHandler(org.teleal.cling.support.model.item.Item, org.teleal.common.xml.SAXParser.Handler)` etc. methods to register custom handlers for vendor-specific elements and attributes within items, containers, and so on.

Author:
  Christian Bauer

Nested Class Summary
`class` | `DIDLParser.ContainerHandler`
`class` | `DIDLParser.DescMetaHandler` Extracts an `org.w3c.Document` from the nested elements in the `<desc>` element.
`class` | `DIDLParser.DIDLObjectHandler<I extends DIDLObject>`
`class` | `DIDLParser.ItemHandler`
`protected class` | `DIDLParser.ResHandler`
`class` | `DIDLParser.RootHandler`

Nested classes/interfaces inherited from class org.teleal.common.xml.SAXParser
`org.teleal.common.xml.SAXParser.Handler<I>, org.teleal.common.xml.SAXParser.SimpleErrorHandler`

Field Summary

Fields inherited from class org.teleal.common.xml.SAXParser
`XML_SCHEMA_NAMESPACE, XML_SCHEMA_RESOURCE`

Constructor Summary
`DIDLParser()`

Method Summary
`protected void` | `appendClass(Document descriptor, Element parent, DIDLObject.Class clazz, String element, boolean appendDerivation)`
`protected void` | `appendProperties(Document descriptor, Element parent, DIDLObject object, String prefix, Class<? extends DIDLObject.Property.NAMESPACE> namespace, String namespaceURI)`
`protected Document` | `buildDOM(DIDLContent content, boolean nestedItems)`
`protected Container` | `createContainer(Attributes attributes)`
`protected DIDLParser.ContainerHandler` | `createContainerHandler(Container instance, org.teleal.common.xml.SAXParser.Handler parent)`
`protected DescMeta` | `createDescMeta(Attributes attributes)`
`protected DIDLParser.DescMetaHandler` | `createDescMetaHandler(DescMeta instance, org.teleal.common.xml.SAXParser.Handler parent)`
`protected Item` | `createItem(Attributes attributes)`
`protected DIDLParser.ItemHandler` | `createItemHandler(Item instance, org.teleal.common.xml.SAXParser.Handler parent)`
`protected DIDLParser.ResHandler` | `createResHandler(Res instance, org.teleal.common.xml.SAXParser.Handler parent)`
`protected Res` | `createResource(Attributes attributes)`
`protected DIDLParser.RootHandler` | `createRootHandler(DIDLContent instance, org.teleal.common.xml.SAXParser parser)`
`void` | `debugXML(String s)` Sends the given string to the log with `Level.FINE`, if that log level is enabled.
`protected String` | `documentToString(Document document)`
`String` | `generate(DIDLContent content)` Generates a XML representation of the content model.
`String` | `generate(DIDLContent content, boolean nestedItems)` Generates an XML representation of the content model.
`protected void` | `generateContainer(Container container, Document descriptor, Element parent, boolean nestedItems)`
`protected void` | `generateDescMetadata(DescMeta descMeta, Document descriptor, Element parent)`
`protected void` | `generateItem(Item item, Document descriptor, Element parent)`
`protected void` | `generateResource(Res resource, Document descriptor, Element parent)`
`protected void` | `generateRoot(DIDLContent content, Document descriptor, boolean nestedItems)`
`DIDLContent` | `parse(String xml)` Reads and unmarshalls an XML representation into a DIDL content model.
`DIDLContent` | `parseResource(String resource)` Uses the current thread's context classloader to read and unmarshall the given resource.
`protected void` | `populateDescMetadata(Element descElement, DescMeta descMeta)` Expects an `org.w3c.Document` as metadata, copies nodes of the document into the DIDL content.

Methods inherited from class org.teleal.common.xml.SAXParser
`create, createSchema, getErrorHandler, getSchemaSources, parse, setContentHandler`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### DIDLParser

    public DIDLParser()

Method Detail

### parseResource

    public DIDLContent parseResource(String resource)
                              throws Exception

  Uses the current thread's context classloader to read and unmarshall the given resource.

  Parameters:
    `resource` - The resource on the classpath.
  Returns:
    The unmarshalled DIDL content model.
  Throws:
    `Exception`

### parse

    public DIDLContent parse(String xml)
                      throws Exception

  Reads and unmarshalls an XML representation into a DIDL content model.

  Parameters:
    `xml` - The XML representation.
  Returns:
    A DIDL content model.
  Throws:
    `Exception`

### createRootHandler

    protected DIDLParser.RootHandler createRootHandler(DIDLContent instance,
                                                       org.teleal.common.xml.SAXParser parser)

### createContainerHandler

    protected DIDLParser.ContainerHandler createContainerHandler(Container instance,
                                                                 org.teleal.common.xml.SAXParser.Handler parent)

### createItemHandler

    protected DIDLParser.ItemHandler createItemHandler(Item instance,
                                                       org.teleal.common.xml.SAXParser.Handler parent)

### createResHandler

    protected DIDLParser.ResHandler createResHandler(Res instance,
                                                     org.teleal.common.xml.SAXParser.Handler parent)

### createDescMetaHandler

    protected DIDLParser.DescMetaHandler createDescMetaHandler(DescMeta instance,
                                                               org.teleal.common.xml.SAXParser.Handler parent)

### createContainer

    protected Container createContainer(Attributes attributes)

### createItem

    protected Item createItem(Attributes attributes)

### createResource

    protected Res createResource(Attributes attributes)

### createDescMeta

    protected DescMeta createDescMeta(Attributes attributes)

### generate

    public String generate(DIDLContent content)
                    throws Exception

  Generates a XML representation of the content model.

  Items inside a container will not be represented in the XML, the containers will be rendered flat without children.

  Parameters:
    `content` - The content model.
  Returns:
    An XML representation.
  Throws:
    `Exception`

### generate

    public String generate(DIDLContent content,
                           boolean nestedItems)
                    throws Exception

  Generates an XML representation of the content model.

  Optionally, items inside a container will be represented in the XML, the container elements then have nested item elements. Although this parser can read such a structure, it is unclear whether other DIDL parsers should and actually do support this XML.

  Parameters:
    `content` - The content model.
    `nestedItems` - `true` if nested item elements should be rendered for containers.
  Returns:
    An XML representation.
  Throws:
    `Exception`

### documentToString

    protected String documentToString(Document document)
                               throws Exception

  Throws:
    `Exception`

### buildDOM

    protected Document buildDOM(DIDLContent content,
                                boolean nestedItems)
                         throws Exception

  Throws:
    `Exception`

### generateRoot

    protected void generateRoot(DIDLContent content,
                                Document descriptor,
                                boolean nestedItems)

### generateContainer

    protected void generateContainer(Container container,
                                     Document descriptor,
                                     Element parent,
                                     boolean nestedItems)

### generateItem

    protected void generateItem(Item item,
                                Document descriptor,
                                Element parent)

### generateResource

    protected void generateResource(Res resource,
                                    Document descriptor,
                                    Element parent)

### generateDescMetadata

    protected void generateDescMetadata(DescMeta descMeta,
                                        Document descriptor,
                                        Element parent)

### populateDescMetadata

    protected void populateDescMetadata(Element descElement,
                                        DescMeta descMeta)

  Expects an `org.w3c.Document` as metadata, copies nodes of the document into the DIDL content.

  This method will ignore the content and log a warning if it's of the wrong type. If you override `createDescMetaHandler(org.teleal.cling.support.model.DescMeta , org.teleal.common.xml.SAXParser.Handler)`, you most likely also want to override this method.

  Parameters:
    `descElement` - The DIDL content `<desc>` element wrapping the final metadata.
    `descMeta` - The metadata with a `org.w3c.Document` payload.

### appendProperties

    protected void appendProperties(Document descriptor,
                                    Element parent,
                                    DIDLObject object,
                                    String prefix,
                                    Class<? extends DIDLObject.Property.NAMESPACE> namespace,
                                    String namespaceURI)

### appendClass

    protected void appendClass(Document descriptor,
                               Element parent,
                               DIDLObject.Class clazz,
                               String element,
                               boolean appendDerivation)

### debugXML

    public void debugXML(String s)

  Sends the given string to the log with `Level.FINE`, if that log level is enabled.

  Parameters:
    `s` - The string to send to the log.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2010 Teleal GmbH, Switzerland. All Rights Reserved.