public class DIDLParser extends SAXParser
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.
| 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 |
SAXParser.Handler<I>, SAXParser.SimpleErrorHandler| Modifier and Type | Field and Description |
|---|---|
static String |
UNKNOWN_TITLE |
XML_SCHEMA_NAMESPACE, XML_SCHEMA_RESOURCE| 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,
SAXParser.Handler<?> parent) |
protected DescMeta<?> |
createDescMeta(Attributes attributes) |
protected DIDLParser.DescMetaHandler |
createDescMetaHandler(DescMeta<?> instance,
SAXParser.Handler<?> parent) |
protected Item |
createItem(Attributes attributes) |
protected DIDLParser.ItemHandler |
createItemHandler(Item instance,
SAXParser.Handler<?> parent) |
protected DIDLParser.ResHandler |
createResHandler(Res instance,
SAXParser.Handler<?> parent) |
protected Res |
createResource(Attributes attributes) |
protected DIDLParser.RootHandler |
createRootHandler(DIDLContent instance,
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. |
create, createSchema, getErrorHandler, getSchemaSources, parse, setContentHandlerpublic static final String UNKNOWN_TITLE
public DIDLContent parseResource(String resource) throws Exception
resource - The resource on the classpath.Exceptionpublic DIDLContent parse(String xml) throws Exception
xml - The XML representation.Exceptionprotected DIDLParser.RootHandler createRootHandler(DIDLContent instance, SAXParser parser)
protected DIDLParser.ContainerHandler createContainerHandler(Container instance, SAXParser.Handler<?> parent)
protected DIDLParser.ItemHandler createItemHandler(Item instance, SAXParser.Handler<?> parent)
protected DIDLParser.ResHandler createResHandler(Res instance, SAXParser.Handler<?> parent)
protected DIDLParser.DescMetaHandler createDescMetaHandler(DescMeta<?> instance, 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.Exceptionpublic 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.Exceptionprotected String documentToString(Document document, boolean omitProlog) throws Exception
Exceptionprotected Document buildDOM(DIDLContent content, boolean nestedItems) throws Exception
Exceptionprotected 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.jupnp.support.model.DescMeta, org.jupnp.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 © 2023 jUPnP.org. All rights reserved.