DIDLParser从DIDLContent生成XML和Parse XML 得到 DIDLContent
来源:互联网 发布:淘宝卖家草稿箱在哪里 编辑:程序博客网 时间:2024/06/05 10:56
XML通过DIDLParser类的generate从DIDLContent生成。
try{ //使用didl得到answer,好像是一个xml,是String类型啊 /*变成一个字符串*/ answer = new DIDLParser().generate(didl); } catch (Exception ex) { throw new ContentDirectoryException( ContentDirectoryErrorCode.CANNOT_PROCESS, ex.toString()); }
是这个方法,实际是将DIDLContent变为一个xml
public String generate(DIDLContent content, boolean nestedItems) throws Exception { return this.documentToString(this.buildDOM(content, nestedItems), true);}protected String documentToString(Document document, boolean omitProlog) throws Exception { TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(); if(omitProlog) { transformer.setOutputProperty("omit-xml-declaration", "yes"); } StringWriter out = new StringWriter(); transformer.transform(new DOMSource(document), new StreamResult(out)); return out.toString();}
实际过程是:首先是DIDLContent经过BuildDOM来构造得到一个Document对象,然后对这个Document对象操作得到String类型对象。
protected Document buildDOM(DIDLContent content, boolean nestedItems) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); Document d = factory.newDocumentBuilder().newDocument(); this.generateRoot(content, d, nestedItems); return d;}
以下代码来自cling库:
xml经过parse之后,得到DIDLContent才能给app使用,parse的过程如下:
public DIDLContent parse(String xml) throws Exception { if(xml != null && xml.length() != 0) { DIDLContent content = new DIDLContent(); this.createRootHandler(content, this); log.fine("Parsing DIDL XML content"); this.parse(new InputSource(new StringReader(xml))); return content; } else { throw new RuntimeException("Null or empty XML"); }}
上面的函数调用了:
public void parse(InputSource source) throws ParserException { try { this.xr.parse(source); } catch (Exception var3) { throw new ParserException(var3); }}
实际调用的是XMLReader(接口类)的方法parse:
import java.io.IOException;
import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
public interface XMLReader {
boolean getFeature(String var1) throws SAXNotRecognizedException, SAXNotSupportedException;
void setFeature(String var1, boolean var2) throws SAXNotRecognizedException, SAXNotSupportedException;Object getProperty(String var1) throws SAXNotRecognizedException, SAXNotSupportedException;void setProperty(String var1, Object var2) throws SAXNotRecognizedException, SAXNotSupportedException;void setEntityResolver(EntityResolver var1);EntityResolver getEntityResolver();void setDTDHandler(DTDHandler var1);DTDHandler getDTDHandler();void setContentHandler(ContentHandler var1);ContentHandler getContentHandler();void setErrorHandler(ErrorHandler var1);ErrorHandler getErrorHandler();void parse(InputSource var1) throws IOException, SAXException;void parse(String var1) throws IOException, SAXException;
}
阅读全文
0 0
- DIDLParser从DIDLContent生成XML和Parse XML 得到 DIDLContent
- parse XML
- xml parse
- 利用dom4j 读取javabean生成XML和读取XML得到javabean对象(集合)
- dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- java从数据库生成xml和读取xml(无限生成或读取)
- JAVASCRIPT PARSE XML FILE
- Android parse XML
- java parse xml file
- code pieces xml parse
- jQuery parse XML - ajax
- Android Parse XML
- Java DOM parse xml
- dom4j parse xml
- python parse xml file
- SAX/DOM parse XML
- parse post xml string
- Java Dom Parse XML
- MySQL---数据库从入门走向大神系列(十四)-ComboPooledDataSource(C3P0连接池配置)
- 【Java】【JVM】内存泄漏
- PowerDesigner 之PDM
- 冒烟测试
- HTML5 应用程序缓存
- DIDLParser从DIDLContent生成XML和Parse XML 得到 DIDLContent
- HTML5+JavaScript(全选和全不选)
- Red Giant TrapCode Suite(红巨星AE粒子特效插件套装合集)官方注册版V14.0.3下载 | red giant trapcode suite 14
- nginx 搭建rtmp直播服务器
- React的学习
- 链接
- ffmpeg查看音频波形
- HDU 3065 病毒侵袭持续中(AC自动机 数组模板)
- 【Scikit-Learn 中文文档】密度估计