|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.teleal.common.xml.SAXParser
org.teleal.cling.support.contentdirectory.DIDLParser
public class DIDLParser
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.
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,
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. |
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 |
---|
public DIDLParser()
Method Detail |
---|
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.teleal.common.xml.SAXParser parser)
protected DIDLParser.ContainerHandler createContainerHandler(Container instance, org.teleal.common.xml.SAXParser.Handler parent)
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 DIDLParser.DescMetaHandler createDescMetaHandler(DescMeta instance, org.teleal.common.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 generateItem(Item item, Document descriptor, Element parent)
protected void generateResource(Res resource, Document descriptor, Element parent)
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.teleal.cling.support.model.DescMeta, org.teleal.common.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)
public void debugXML(String s)
Level.FINE
, if that log level is enabled.
s
- The string to send to the log.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |