Java Jsoup简单HTML标记拆分

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

我的java应用程序读取数据库行,并创建iText PDF文件。问题是,我得到的行中的某些单元格包含粗体HTML标记,这意味着我还必须在各自的iText段落中显示粗体块

因此,例如,DB线的一个单元可以如下所示:

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