Klasse DIDLParser

java.lang.Object
org.jupnp.xml.SAXParser
org.jupnp.support.contentdirectory.DIDLParser

public class DIDLParser extends 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.jupnp.support.model.DescMeta, org.jupnp.xml.SAXParser.Handler) method to read vendor extension content of <desc> elements. You then should also override the populateDescMetadata(org.w3c.dom.Element, org.jupnp.support.model.DescMeta) method for writing.

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

Autor:
Christian Bauer, Mario Franco, Amit Kumar Mondal - Code Refactoring
  • Felddetails

  • Konstruktordetails

    • DIDLParser

      public DIDLParser()
  • Methodendetails

    • parseResource

      public DIDLContent parseResource(String resource) throws Exception
      Uses the current thread's context classloader to read and unmarshall the given resource.
      Parameter:
      resource - The resource on the classpath.
      Gibt zurück:
      The unmarshalled DIDL content model.
      Löst aus:
      Exception
    • parse

      public DIDLContent parse(String xml) throws Exception
      Reads and unmarshalls an XML representation into a DIDL content model.
      Parameter:
      xml - The XML representation.
      Gibt zurück:
      A DIDL content model.
      Löst aus:
      Exception
    • createRootHandler

      protected DIDLParser.RootHandler createRootHandler(DIDLContent instance, SAXParser parser)
    • createContainerHandler

      protected DIDLParser.ContainerHandler createContainerHandler(Container instance, SAXParser.Handler<?> parent)
    • createItemHandler

      protected DIDLParser.ItemHandler createItemHandler(Item instance, SAXParser.Handler<?> parent)
    • createResHandler

      protected DIDLParser.ResHandler createResHandler(Res instance, SAXParser.Handler<?> parent)
    • createDescMetaHandler

      protected DIDLParser.DescMetaHandler createDescMetaHandler(DescMeta<?> instance, 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.

      Parameter:
      content - The content model.
      Gibt zurück:
      An XML representation.
      Löst aus:
      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.

      Parameter:
      content - The content model.
      nestedItems - true if nested item elements should be rendered for containers.
      Gibt zurück:
      An XML representation.
      Löst aus:
      Exception
    • documentToString

      protected String documentToString(Document document, boolean omitProlog) throws Exception
      Löst aus:
      Exception
    • buildDOM

      protected Document buildDOM(DIDLContent content, boolean nestedItems) throws Exception
      Löst aus:
      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.jupnp.support.model.DescMeta, org.jupnp.xml.SAXParser.Handler), you most likely also want to override this method.

      Parameter:
      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)
    • booleanToInt

      protected String booleanToInt(boolean b)
    • debugXML

      public void debugXML(String s)
      Logs the given string at debug log level if enabled.
      Parameter:
      s - The string to send to the log.