Java Jsoup简单HTML标记拆分
我的java应用程序读取数据库行,并创建iText PDF文件。问题是,我得到的行中的某些单元格包含粗体HTML标记,这意味着我还必须在各自的iText段落中显示粗体块 因此,例如,DB线的一个单元可以如下所示:Java Jsoup简单HTML标记拆分,java,pdf,itext,jsoup,Java,Pdf,Itext,Jsoup,我的java应用程序读取数据库行,并创建iText PDF文件。问题是,我得到的行中的某些单元格包含粗体HTML标记,这意味着我还必须在各自的iText段落中显示粗体块 因此,例如,DB线的一个单元可以如下所示: This is an <b>important</b> line and i <b>want</b> formatting in it 我真正想做的是在粗体和非粗体部分之间分割字符串。所以我的问题的正确解决方案是 This is an
This is an <b>important</b> line and i <b>want</b> formatting in it
我真正想做的是在粗体和非粗体部分之间分割字符串。所以我的问题的正确解决方案是
This is an
<b>important</b>
line and i
<b>want</b>
formatting in it
这是一个
重要的
line和我
希望
格式化
或者类似的东西,这样我就可以创建iText块并添加到我的段落中。
有没有办法用Jsoup做到这一点 您可以使用
节点
,而不是元素
:
final String html = "This is an <b>important</b> line and i <b>want</b> formatting in it";
Document doc = Jsoup.parse(html);
for( Node node : doc.body().childNodes() )
{
System.out.println(node.toString());
}
final String html=“这是一个重要的行,我想在其中设置格式”;
Document doc=Jsoup.parse(html);
对于(节点:doc.body().childNodes())
{
System.out.println(node.toString());
}
输出:
This is an
<b>important</b>
line and i
<b>want</b>
formatting in it
这是一个
重要的
line和我
希望
格式化
如果前导空格有问题,请使用
node.toString().trim()
我认为有几种解决方案:
- 第一个是最简单的:您一个接一个地运行所有元素,对于每个元素,您检查它是否是
标记。为此:通用选择器、所有元素的循环以及检查元素是否为粗体 - 另一个,更复杂一点,效率更高,我想如果你有几个标签的话:你可以像选择一样选择粗体,而非粗体,选择not选择器:
。现在有两个元素列表,但它们没有顺序。检索您可以使用的订单:not('b')
如果您想了解有关选择器的更多信息:您能添加一个完整的文本示例吗?你有其他标签吗,或者只有
标签?我只有标签。没有其他标签。下面是一个实际的例子:CS999X(26-0A--200005),ID值为200005,正如您可以看到的,有多个粗体出现,需要转换为带有粗体字体的块,只有粗体标记,您考虑过使用正则表达式吗?这可能是一个比只为粗体元素添加html解析器更好的解决方案。我已经尝试过这样做,但这意味着我将需要处理start()和end()的匹配,然后从原始输入行中获取子字符串,这似乎是一个过度的操作。此外,我试图避免出现某些不匹配的情况,我必须多次更改regexp。此外,我正在努力做好准备,以防数据提供商决定在某个时候添加另一个标记…好的,那么这是有意义的,只是为了确保您知道regexp可能是一个解决方案。非常感谢!这正是我想要的。为了其他可能需要这样做的人,我想指出node.nodeName()返回HTML标记,因此可以编程处理任何标记
This is an
<b>important</b>
line and i
<b>want</b>
formatting in it