有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字符串如何在java中解析网页的特定部分?

我正在获取一个网页的主体,其中有一个包含许多行的表,如下所示:

 ...
 ...
 <tbody>
   <tr class="odd">
     <td align="center">08:00</td>
     <td align="center">9.50</td>
     <td>Description of event 1 </td>
     <td align="center">7.80</td>
   </tr>
   <tr class="even">
     <td align="center">09:00</td>
     <td align="center">11.10</td>
     <td>Description of event 2</td>
     <td align="center">27.40</td>
   </tr>
...

我想从这个表中剪切部分,并将其解析为我的对象。我试图使用子字符串,但我不知道文本中需要的部分在哪里。另外,我正在寻找正则表达式和不同的解析器。我怎样才能决定我的问题?谢谢


共 (2) 个答案

  1. # 1 楼答案

    您可以使用jsoup将html解析为Document,并使用Jsoup DOM methods导航html

    String yourHtml = "<someHtml/>"; 
    Document doc = Jsoup.parseBodyFragment(yourHtml);
    
    Element table = doc.getElementByTag("tbody");
    Elements rows = table.getElementsByTag("tr");
    for (Element row : rows) {
        for (Element cell : row.getElementsByTag("td")) {
            String content = cell.text();
        }
    }
    
  2. # 2 楼答案

    因为它是XML格式的,所以应该使用Java XML API(如DOM或SAX)来完成。或者您可以使用第三方XML库(如JDOM和DOM4J)进行处理

    File file = new File(Appl.class.getClassLoader().getResource("testing.xml").getFile());
    Document document = DocumentFactory.createDocument(file);
    Element element = document.getElementById("tag22");
    System.out.println(element.getTextContent());
    

    测试。xml

    <?xml version='1.0' encoding='UTF-8'?>
    <tag1 id="tag1">
        <tag2 id="tag22">Testing Content</tag2>
    </tag1>