在xml中存储html值

时间:2011-12-26 01:34:25

标签: java html xml xslt

试图找出一种从html文件中删除特定信息(名称,描述,id等)的方法,留下不需要的信息并将其存储在xml文件中。

我想尝试使用xslt,因为它可以对xtml执行xml ...但它似乎没有相反的方法。

老实说,我不知道我应该尝试用其他语言来实现这个目标。我知道基本的java和javascript,但不确定它是否可以做到这一点..我有点迷失了这个开始。

我愿意接受任何建议/帮助。我也愿意学习一门新语言,因为我只是为了好玩而这样做。

4 个答案:

答案 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)

我会使用HTMLAgilityPackChris LovettSGMLReader

或者,只需 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)

  • TagSoup
  • JS​​oup
  • 美丽的汤