XHTML是java转换的最佳方式

时间:2013-04-10 18:28:54

标签: java xhtml xml-parsing jaxb

我们有一个将xhtml文件转换为java对象的请求(我无法更改源以更改格式或类型)。这是关于地址的,如果同一个人在系统中有两个地址,则前三个标签可以为空。将此转换为java对象的最佳方法是什么? jaxb还是其他什么?你能简单介绍一下你是如何做到这一点的。

例如:

<table>
<tr>
<td>john</td>
<td>doe</td>
<td>1/1/09</td>
<td>cincinnati, OH</td>

</tr>

<tr>
<td></td>
<td></td>
<td></td>
<td>Atlanta, GA</td>
</tr>

<tr>
<td>john1</td>
<td>doe1</td>
<td>1/1/89</td>
<td>cincinnati, OH</td>
</tr>
</table>

2 个答案:

答案 0 :(得分:1)

以下是使用jSoup的方法:

import java.io.File;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class so15933614 {

    public static void main(String[] args) throws IOException {
        String url = "so15933614.html";
        print("Fetching %s...", url);
        Document doc = Jsoup.parse(new File(url), "UTF-8");
        Elements rows = doc.select("tr");
        for (Element row : rows) {
            print("---------");
            Elements data = row.getElementsByTag("td");
            print("First Name:%s", data.get(0).text());
            print("Last Name:%s", data.get(1).text());
            print("Date:%s", data.get(2).text());
            print("City:%s", data.get(3).text());
        }
    }

    private static void print(String msg, Object... args) {
        System.out.println(String.format(msg, args));
    }
}

输出结果为:

Fetching so15933614.html...
---------
First Name:john
Last Name:doe
Date:1/1/09
City:cincinnati, OH
---------
First Name:
Last Name:
Date:
City:Atlanta, GA
---------
First Name:john1
Last Name:doe1
Date:1/1/89
City:cincinnati, OH

答案 1 :(得分:0)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。

您可以使用MOXy的@XmlPath扩展程序按位置映射事物:

@XmlAccessorType(XmlAccessType.FIELD)
public class Person {

    @XmlPath("td[1]/text()")
    private String firstName;

    @XmlPath("td[2]/text()")
    private String lastName;

    @XmlPath("td[3]/text()")
    private String date;

    @XmlPath("td[4]/text()")
    private String city;

}

了解更多信息