public class DIDLParser
extends org.seamless.xml.SAXParser
This parser requires Android platform level 8 (2.2).
Override the createDescMetaHandler(org.fourthline.cling.support.model.DescMeta, org.seamless.xml.SAXParser.Handler)
method to read vendor extension content of <desc>
elements. You then should also override the
populateDescMetadata(org.w3c.dom.Element, org.fourthline.cling.support.model.DescMeta)
method for writing.
Override the createItemHandler(org.fourthline.cling.support.model.item.Item, org.seamless.xml.SAXParser.Handler)
etc. methods to register custom handlers for vendor-specific elements and attributes within items, containers,
and so on.
Modifier and Type | Class and Description |
---|---|
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 |
Modifier and Type | Field and Description |
---|---|
static String |
UNKNOWN_TITLE |
Constructor and Description |
---|
DIDLParser() |
Modifier and Type | Method and Description |
---|---|
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 String |
booleanToInt(boolean b) |
protected Document |
buildDOM(DIDLContent content,
boolean nestedItems) |
protected Container |
createContainer(Attributes attributes) |
protected DIDLParser.ContainerHandler |
createContainerHandler(Container instance,
org.seamless.xml.SAXParser.Handler parent) |
protected DescMeta |
createDescMeta(Attributes attributes) |
protected DIDLParser.DescMetaHandler |
createDescMetaHandler(DescMeta instance,
org.seamless.xml.SAXParser.Handler parent) |
protected Item |
createItem(Attributes attributes) |
protected DIDLParser.ItemHandler |
createItemHandler(Item instance,
org.seamless.xml.SAXParser.Handler parent) |
protected DIDLParser.ResHandler |
createResHandler(Res instance,
org.seamless.xml.SAXParser.Handler parent) |
protected Res |
createResource(Attributes attributes) |
protected DIDLParser.RootHandler |
createRootHandler(DIDLContent instance,
org.seamless.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,
boolean omitProlog) |
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. |
public static final String UNKNOWN_TITLE
public DIDLContent parseResource(String resource) throws Exception
resource
- The resource on the classpath.Exception
public DIDLContent parse(String xml) throws Exception
xml
- The XML representation.Exception
protected DIDLParser.RootHandler createRootHandler(DIDLContent instance, org.seamless.xml.SAXParser parser)
protected DIDLParser.ContainerHandler createContainerHandler(Container instance, org.seamless.xml.SAXParser.Handler parent)
protected DIDLParser.ItemHandler createItemHandler(Item instance, org.seamless.xml.SAXParser.Handler parent)
protected DIDLParser.ResHandler createResHandler(Res instance, org.seamless.xml.SAXParser.Handler parent)
protected DIDLParser.DescMetaHandler createDescMetaHandler(DescMeta instance, org.seamless.xml.SAXParser.Handler parent)
protected Container createContainer(Attributes attributes)
protected Item createItem(Attributes attributes)
protected Res createResource(Attributes attributes)
protected DescMeta createDescMeta(Attributes attributes)
public String generate(DIDLContent content) throws Exception
Items inside a container will not be represented in the XML, the containers will be rendered flat without children.
content
- The content model.Exception
public String generate(DIDLContent content, boolean nestedItems) throws Exception
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.
content
- The content model.nestedItems
- true
if nested item elements should be rendered for containers.Exception
protected String documentToString(Document document, boolean omitProlog) throws Exception
Exception
protected Document buildDOM(DIDLContent content, boolean nestedItems) throws Exception
Exception
protected void generateRoot(DIDLContent content, Document descriptor, boolean nestedItems)
protected void generateContainer(Container container, Document descriptor, Element parent, boolean nestedItems)
protected void generateDescMetadata(DescMeta descMeta, Document descriptor, Element parent)
protected void populateDescMetadata(Element descElement, DescMeta descMeta)
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.fourthline.cling.support.model.DescMeta, org.seamless.xml.SAXParser.Handler)
,
you most likely also want to override this method.
descElement
- The DIDL content <desc>
element wrapping the final metadata.descMeta
- The metadata with a org.w3c.Document
payload.protected void appendProperties(Document descriptor, Element parent, DIDLObject object, String prefix, Class<? extends DIDLObject.Property.NAMESPACE> namespace, String namespaceURI)
protected void appendClass(Document descriptor, Element parent, DIDLObject.Class clazz, String element, boolean appendDerivation)
protected String booleanToInt(boolean b)
public void debugXML(String s)
Level.FINE
, if that log level is enabled.s
- The string to send to the log.Copyright © 2016 4th Line GmbH, Switzerland. All rights reserved.