这是此question的扩展。我正在尝试解析嵌入到博客的XML备份中的HTML代码片段,并用InDesign标记对它们进行重新标记。
Blogger没有为其任何帖子标准化HTML,并且帖子可以用Word、Windows Live Writer、原生Blogger界面或文本编辑器编写,这导致了大量不同形式的HTML。有些帖子不标记段落,只在段落之间使用双<br>--其他的则使用实际的<p>标签。
解析这种非标准的标签集合的最佳方法是什么?
此外,每个帖子都不是一个完整的超文本标记语言文件--只是插入到模板中的一个片段--这意味着没有整体的超文本标记语言结构需要解析(<html><body></body></html>等)。这对XML/HTML解析有影响吗?
这里有一些潜在的例子,大部分是标准的HTML,缺少段落:
This is a section of a blog post. It has <a href="#">links</a> and lists and stuff. Weee....
<br>
<br>
Here's a list
<br/>
<br />
<ul><li>Item 1</li><li>Item 2</li><ul>
And another paragraph here...
<br>
<br/>
Etc.单词HTML看起来像这样- http://www.timeatlas.com/mos/images/stories/word_html_tags.png
发布于 2009-06-12 04:53:50
总之,我倾向于使用XML::LibXML来满足我所有的XML和HTML需求。下面的一行代码将把一行“坏的”HTML转换成格式良好的XHTML文档:
perl -MXML::LibXML -ne 'my $p = XML::LibXML->new->parse_html_string($_); print $p->toString'在您的示例中,您可能希望使用DOM发出具有正确标记的新文档。这很简单;XML::LibXML使用与JavaScript相同的W3C DOM。
例如,下面的输入:
<p>Foo<p>Bar<br>Baz!翻译成:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>Foo</p><p>Bar<br/>Baz!
</p></body></html>这可能就是你想要的,记住,使用DOM来翻译...不要担心这个打印出来的表示。
https://stackoverflow.com/questions/982203
复制相似问题