试图找出一种从html文件中删除特定信息(名称,描述,id等)的方法,留下不需要的信息并将其存储在xml文件中。
我想尝试使用xslt,因为它可以对xtml执行xml ...但它似乎没有相反的方法。
老实说,我不知道我应该尝试用其他语言来实现这个目标。我知道基本的java和javascript,但不确定它是否可以做到这一点..我有点迷失了这个开始。
我愿意接受任何建议/帮助。我也愿意学习一门新语言,因为我只是为了好玩而这样做。
答案 0 :(得分:3)
有许多Java库用于处理格式不正确的HTML输入(根据XML)。这些库还有用于查询或操作文档的内置方法,但重要的是要意识到一旦解析了文档,通常很容易将它视为第一个XML放置(使用标准Java XML接口)。换句话说,您只需要这些库来解析格式错误的输入;他们提供的其他公用设施大多是多余的。
以下示例显示使用HTMLCleaner解析HTML,然后将该对象转换为标准org.w3c.dom.Document
:
TagNode tagNode = new HtmlCleaner().clean("<html><div><p>test");
DomSerializer ser = new DomSerializer(new CleanerProperties());
org.w3c.dom.Document doc = ser.createDOM(tagNode);
在Jsoup中,只需解析输入并将其序列化为字符串:
String text = Jsoup.parse("<html><div><p>test").outerHtml();
使用此处描述的方法之一将该字符串转换为W3C文档:
您现在可以使用标准JAXP接口来转换此文档:
TransformerFactory tFact = TransformerFactory.newInstance();
Transformer transformer = tFact.newTransformer();
Source source = new DOMSource(doc);
Result result = new StreamResult(System.out);
transformer.transform(source, result);
注意:向tFact.newTransformer()
提供一些XSLT源代码,以执行比身份转换更有用的操作。
答案 1 :(得分:2)
我会使用HTMLAgilityPack或Chris Lovett的SGMLReader 。
或者,只需 HTML Tidy 。
答案 2 :(得分:0)
理想情况下,您可以将HTML视为XML。如果幸运的话,它已经是XHTML,您可以将其作为HTML处理。如果没有,请使用http://nekohtml.sourceforge.net/(HTML标记平衡器等)将HTML处理为符合XML的内容,以便您可以使用XSLT。
我在http://blogger.ziesemer.com/2008/03/scraping-suns-bug-database.html的个人博客上有一个具体的例子和一些注意事项。
答案 3 :(得分:0)