我有一个我希望运行的HTML页面"专门的" TTS:
例如:
<h3>Title <u>Page<u> by Ada Lovelace</h3>
我想以不同的方式阅读标题和页面:
当我使用时:
Element body=doc.body();
Elements elements= body.select("*");
for(Element element:elements){
if(!element.ownText().equals("") && element.hasText()){
Log.d("Epub",element.tagName()+" "+element.ownText());
}
}
我将日志输出视为:
h3 Title by Ada Lovelace
u Page
我想将数据作为:
h3 Title
u Page
h3 by Ada Lovelace
我无权访问HTML文件
提前感谢任何帮助!
[编辑]
嘿所以我找到了一种方法,但我没有使用Jsoup,而是使用了XML pull解析器
private ArrayList<String> stackOfTags=new ArrayList<String>();
private int indexOfTags=-1;
private void prepareTextToSpeech__onHold() {
String opening_tag="";
try{
XmlPullParser parser=prepareText__onHold();
int eventType=parser.getEventType();
while (eventType!=XmlPullParser.END_DOCUMENT){
switch (eventType){
case XmlPullParser.START_TAG:
opening_tag=parser.getName();
stackOfTags.add(parser.getName());
indexOfTags++;
break;
case XmlPullParser.TEXT:
String temp=parser.getText();
if(temp.matches(".*[a-zA-Z]+.*") && !opening_tag.equals("script")){
contentMap.addItemInMap(opening_tag,parser.getText());
Log.d("Epub",stackOfTags.get(indexOfTags)+" "+parser.getText());
}
break;
case XmlPullParser.END_TAG:
stackOfTags.remove(indexOfTags);
indexOfTags--;
break;
}
eventType=parser.next();
}
}catch (Exception e){
Log.d("Epub",e.getMessage());
}
}
然而,这仅适用于格式良好的HTML。如果不是这种情况可以有人帮助
答案 0 :(得分:0)
我认为原始HTML是<h3>Title <u>Page</u> by Ada Lovelace</h3>
如果是这种情况,您的HTML似乎格式正确。 Jsoup允许读取每个TextNode的内容,因此您可以读出&#34; Title&#34;,&#34; Page&#34;和#34;作者:Ada Lovlace&#34;作为不同的字串。
我现在没有正在运行的Java环境,因此我无法提供正常工作的代码,但这里有一个指向源代码的指针,告诉您它是如何完成的: