[英]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.