繁体   English   中英

XHTML到Java转换的最佳方法

[英]XHTML to java conversion best way

我们有一个将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>

这是使用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

注意:我是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;

}

欲获得更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM