Jsoup解析不嵌套标签

时间:2016-02-22 03:16:53

标签: java html parsing jsoup

我正在尝试解析一个站点的项目。我达到了目标,但我失去了很多信息,因为我不能用我的方法解析它。现在,在JSOUP API之后我将符号替换为用于创建特定格式的标记,我可以使用它来按标记进行迭代并将它们排序到数组。

因此,行动链:jsoup html > jsoup text > string replaces > jsoup html

我认为我用文字做的一切都很容易用JSOUP做。但是,不幸的是,我是这个库的新手,无法正确使用它。

现在如何运作。我有一个字符串。如果我使用html(),我会看到:

<i>Требования:</i>
<br>
<i>Эффект:</i>
<br>- Увеличивает МА: 45
<br>- Увеличивает ФЗ: 57
<br>- Увеличивает МЗ: 57
<br>- Увеличивает Земля: 15
<br>- Увеличивает Воздух: 15
<br>- Увеличивает Вода: 15
<br>- Увеличивает Огонь: 15
<br>- Срок жизни: 720
<br>

如果我使用text(),那么结果将是:

Требования: Эффект: - Увеличивает МА: 45 - Увеличивает ФЗ: 57 - Увеличивает     МЗ: 57 - Увеличивает Земля: 15 - Увеличивает Воздух: 15 - Увеличивает Вода: 15 -     Увеличивает Огонь: 15 - Срок жизни: 720

我使用一堆替换来获取某些东西,我可以迭代

String htmlAddMoreBR = html.replace("\t\t","<br>");
String htmlAddClass = htmlAddMoreBR.replace("<br>- ","</span><span class=\"item\">");
String htmlReplaceI = htmlAddClass.replace("<i>","</span><span class=\"group\">");
String htmlDeleteBR = htmlReplaceI.replace("<br>","");
String htmlReplaceStrongOpen = htmlDeleteBR.replace("<strong>","<span class=\"item\">");
String htmlReplaceStrongClose = htmlReplaceStrongOpen.replace("</strong>","</span>");
String htmlRemoveSec = htmlReplaceStrongClose.replace(" сек.","");
String htmlRemoveMeters = htmlRemoveSec.replace(" м.","");
String htmlReplaceСommaToDots = htmlRemoveMeters.replace(",",".");
Document document = Jsoup.parse(htmlReplaceСommaToDots);
Elements elements = document.select("span");

我的替换结果

</span><span class="group">Требования:</i>
</span><span class="group">Эффект:</i>
</span><span class="item">Увеличивает МА: 45
</span><span class="item">Увеличивает ФЗ: 57
</span><span class="item">Увеличивает МЗ: 57
</span><span class="item">Увеличивает Земля: 15
</span><span class="item">Увеличивает Воздух: 15
</span><span class="item">Увеличивает Вода: 15
</span><span class="item">Увеличивает Огонь: 15
</span><span class="item">Срок жизни: 720

我创建了3个HashMaps optReqList effList currentList (oups,忘记更改名称,nvm)。如果我得到要求关键字,然后currentList = optReqList,如果得到 EFFECTS 关键字,然后是currentList = effList,则按迭代迭代,否则推送到currentList新项目,我发现他们的关键词。

它有效。但!这种替换方法不允许我解析级别 desc comp [] 。而且代码也很脏。

** 示例,我的替换不起作用。

<i>Набор предметов для 3 уровня специализации "Инквизитор". Дешевле на 25%, чем тот же набор, покупаемый по отдельности.</i> 
<br> 
<i>Состав:</i>
<ul>
<li>Клепанный шлем Инквизитора</li>
<li>Клепанный пояс Трибунала</li>
</ul>
<br>
<br>

替换结果。

</span><span class="group">Набор предметов для 3 уровня специализации     "Инквизитор". Дешевле на 25%. чем тот же набор. покупаемый по отдельности.</i> 
</span><span class="group">Состав:</i>
<ul>
<li>Клепанный шлем Инквизитора</li>
<li>Клепанный пояс Трибунала</li>
</ul>

我真的需要你的帮助。 如何使用JSOUP正确解析所有项目,如下图所示?

<strong>Item:Level</strong>
<i>Description. Bunch of text here.</i> 
<br> 
<i>Composition</i>
<ul>
<li>Item1</li>
<li>Item2</li>
</ul>
<br>
<i>Requirements:</i>
<br>
- Item1Name:Item1Value
<br>
- Item2Name:Item2Value
<br>
- Item3Name:Item3Value
<br>
<i>Effect:</i>
<br>
- Item1Name:Item1Value
<br>
- Item2Name:Item2Value
<br>
- Item3Name:Item3Value
<br>
- Item4Name:Item4Value
<br>

此外,我还创建了文档,以便更好地理解此项目的图像和代码之间的关系。 Google Docs Document. Examples.和存储库:SimpleParserGamexp,包含完整的源代码。 Picture.Examples of items

0 个答案:

没有答案