2017-11-06 5 views
1

이 같은 라인을 많이 가진 테이블이 어디 웹 페이지의 몸을 가져 오는 해요 :자바에서 웹 페이지의 특정 부분을 구문 분석하는 방법은 무엇입니까?

... 
... 
<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> 
... 

나는이 테이블에서 부분을 잘라 내 객체에 분석하고자하는가. 하위 문자열을 사용하려고했지만 텍스트의 필요한 부분이 어디에 있는지 알 수 없습니다. 또한 정규 표현식과 다른 파서를 찾고있었습니다. 문제를 어떻게 결정할 수 있습니까? 감사합니다

+0

를 시도? 또한 "cut string"이라고 할 때 ['String # split']을 의미합니까 (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split (java .lang.String))? –

+4

html 파서를 사용해야합니다. https://jsoup.org/ – code11

답변

6

jsoup을 사용하면 Document으로 html을 구문 분석하고 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(); 
    } 
} 
+0

행을 가져올 때 'content' 변수는 어디에 정의되어 있습니까? 이것이 '테이블'일까요? – byxor

+0

@byxor whoops, 그게 무슨 일이 일어나고 stackoverflow 페이지에 진짜 IDE의 isntead 코드 –

1

XML 형식이므로 DOM 또는 SAX와 같은 Java XML API를 사용해야합니다. 또는 처리를 위해 JDOM 및 DOM4J와 같은 타사 XML 라이브러리를 사용할 수 있습니다.

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()); 

testing.xml 당신은 무엇을

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