首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将org.w3c.dom.Document转换为org.jdom.Document

如何将org.w3c.dom.Document转换为org.jdom.Document
EN

Stack Overflow用户
提问于 2012-02-17 13:53:03
回答 2查看 2.5K关注 0票数 2

我需要将org.w3c.dom.Document转换为org.jdom.Document

我尝试了以下几种方法..

代码语言:javascript
复制
InputStream inputStream =  new ByteArrayInputStream(str.getBytes());

Tidy tidy = new Tidy();
tidy.setMakeClean(false);
tidy.setShowWarnings(true); //tidy.setShowWarnings(false);
tidy.setTidyMark(false);
tidy.setNumEntities(true);
tidy.setQuoteAmpersand(true);
tidy.setQuoteMarks(true);
tidy.setQuoteNbsp(false);
tidy.setHideEndTags(false);
tidy.setDropEmptyParas(false);

Document tidyDOM =tidy.parseDOM(inputStream, null);
DOMBuilder domBuilder = new DOMBuilder();
org.jdom.Document jdomDoc = domBuilder.build(tidyDOM);

domBuilder.build(tidyDOM)抛出以下异常:

代码语言:javascript
复制
org.jdom.IllegalNameException: The name "html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"" is not legal for JDOM/XML DocTypes: XML names cannot contain the character " ".
    at org.jdom.DocType.setElementName(DocType.java:171)
    at org.jdom.DocType.<init>(DocType.java:111)
    at org.jdom.DocType.<init>(DocType.java:144)
    at org.jdom.DefaultJDOMFactory.docType(DefaultJDOMFactory.java:118)
    at org.jdom.input.DOMBuilder.buildTree(DOMBuilder.java:332)
    at org.jdom.input.DOMBuilder.buildTree(DOMBuilder.java:170)
    at org.jdom.input.DOMBuilder.build(DOMBuilder.java:135)
    at test.JaxenTest.testParsingVisitor(JaxenTest.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
EN

回答 2

Stack Overflow用户

发布于 2012-02-18 09:33:05

在我看来,JTidy似乎正在创建一个格式错误的DocType节点。我建议使用不同的HTML解析器。

我推荐The Validator.nu HTML Parser,但还有很多其他的。

票数 0
EN

Stack Overflow用户

发布于 2012-05-02 04:30:15

添加这两个设置,一切都应该正常工作。

代码语言:javascript
复制
tidy.setXHTML(true);
tidy.setDocType("omit");

第一个设置告诉jTidy输出一个XHTML文件。XHTML文件是有效的XML。

第二个选项卡告诉tidy不要将DOCTYPE行输出到代码中。由于某些原因,JDom似乎不能识别合法的html/xhtml文档类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9323601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档