Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在html/文本内容中获取文本?_Java_Html Parsing_Jsoup - Fatal编程技术网

Java 如何在html/文本内容中获取文本?

Java 如何在html/文本内容中获取文本?,java,html-parsing,jsoup,Java,Html Parsing,Jsoup,大家好 我的html/文本类似于: <html><head><style type="text/css"> </style></head> <body><div style="font-family:times new roman,new york,times,serif;font-size:14pt">first text<br><div><br></div>&l

大家好 我的html/文本类似于:

<html><head><style type="text/css">
</style></head>
<body><div style="font-family:times new roman,new york,times,serif;font-size:14pt">first text<br><div><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 14pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font size="2" face="Tahoma"><hr size="1"><b><span style="font-weight: bold;">one:</span></b> second text<br><b><span style="font-weight: bold;">two:</span></b> third text<br><b><span style="font-weight: bold;">three:</span></b> fourth text<br><b><span style="font-weight: bold;">five:</span></b> fifth text<br></font><br>

第一个文本


第一个:第二个文本
第二个:第三个文本
第三个:第四个文本
第五个:第五个文本

我想在上面的html内容中提取名为“FirstText”的文本
注意:此html内容不是静态的,而是动态的,因此一般的想法是在html文本中获取第一个纯文本

如果您想要一些相当简单的内容,请查看my,它是为在Java ME平台上使用而设计的,因此几乎可以在任何地方使用。没有什么特别的,只是一种将文本流转换为标记和非标记的简单方法。延迟加载属性,如果基本上忽略标记,那么使用起来非常快。

您可以使用SAX样式的HTML解析器,如

为此,使用扩展的
DefaultHandler
初始化解析器,以检测何时第一次调用
characters(…)
方法并保存结果

查看如何设置解析器的一些指导。

您标记了,因此您正在使用。这已经是一个不错的选择;)

以下是使用Jsoup的方法:

String html = "<html><head><style type=\"text/css\"></style></head><body><div style=\"font-family:times new roman,new york,times,serif;font-size:14pt\">first text<br><div><br></div><div style=\"font-family: times new roman,new york,times,serif; font-size: 14pt;\"><br><div style=\"font-family: times new roman,new york,times,serif; font-size: 12pt;\"><font size=\"2\" face=\"Tahoma\"><hr size=\"1\"><b><span style=\"font-weight: bold;\">one:</span></b> second text<br><b><span style=\"font-weight: bold;\">two:</span></b> third text<br><b><span style=\"font-weight: bold;\">three:</span></b> fourth text<br><b><span style=\"font-weight: bold;\">five:</span></b> fifth text<br></font><br>";
Document document = Jsoup.parse(html);
String firstText = document.select(":containsOwn(text)").first().ownText();
System.out.println(firstText);
String html=“第一个文本

第一个:第二个文本
第二个:第三个文本
第三个:第四个文本
第五个:第五个文本

”; documentdocument=Jsoup.parse(html); 字符串firstText=document.select(“:containsOwn(text)”).first().ownText(); System.out.println(firstText);
结果:

第一个文本

另见:

但是,HTML可能不是正确格式的XML,这可能会导致解析问题。谢谢。必须看到HTML,但认为XML。正如您正确指出的,XML解析只适用于XHTML变体。我已经更新了它,提到了TagSoup,一个SAX风格的HTML解析器。嗨,BalusC,非常感谢上面的例子,我会尝试它,但它是否只在内容以开头时起作用,因为有时我正在处理的内容没有,有时文本不在正文中,它在一个div中,我不知道它的位置,我很难找到一个模式真的非常感谢你的帮助,对于快速反馈,我还有一个问题,如果我想得到第一个包含文本的div(整个div)来获得输出,比如:first text
@BalusC,我还想提一下我想要得到的文本不是静态的,所以我想得到第一个文本,它可能是任何东西,没有特定的模式。你可以使用
元素text()
元素html()
元素outerHtml()
,看看有没有合适的。有没有办法获得第三个div的索引?