操作XML-dom4j
首先是到dom4j的官网dom4j文件包,下载之后解压如下所示。
在根目录中,找到dom4j-1.6.1jar包,加入到eclipse中的lib文件下,最后build path一下,即可使用相关的方法。
1、创建XML文档
1.1创建XML文档对象
使用DocumentHelper类中的createDocument()方法,创建一个XML文档对象,代码如下:
Document document = DocumentHelper.createDocument();
另外也可以使用DocumentFactory对象也可以创建一个XML文档对象。
DocumentFactory documentFactory=DocumentFactory.getInstance();
document=documentFactory.createDocument();
1.2创建根节点
(1)使用DocumentHelper对象的createElement()方法创建一个普通的节点信息。
public static Element createElement(String name)
(2)Document对象的setRootElement()方法
public void setRootElement(Element element) ;
例如:创建一个值 包括根节点的XmL文档的具体代码
Document document = DocumentHelper.createDocument();
Element rootElement = DocumentHelper.createElement("person");
document.setRootElement(rootElement);
rootElement.addComment("这是根节点");//添加注释
2、解析XML文档
(1)、加载XML文件
SAXReader saxReader =new SAXReader();
document = saxReader.read(new File(filename));
(2)、获取根节点
Element root = dom.getRootElement();
(3)、遍历节点信息
for (Iterator i =root.elementIterator(); i.hasNext();) {
Element el =(Element) i.next();
if(catNameEn.equals(el.elementTextTrim("engName"))){
flag = false;
break;
}
}
下面就以dom4j解析本博客的文章信息,
首先分析网页的xml文件格式,打开本博客的“订阅”链接,在网页显示xml文件格式如下:
然后在打开entry节点,如下所示:
分析一下:
1、要读取网页数据,首先需要创建一个URL对象,用本博客的“订阅”链接创建URL对象,代码如下:
URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
SAXReader reader = new SAXReader();
Document document = reader.read(url);
2、获取XML文档的根节点,确定根节点的数量,然后遍历内容,代码如下:
Element rootElement = document.getRootElement();
List list_item = rootElement.elements("entry");
3、遍历XML文件的数据,代码如下:
if (list_item.size() > 0) {
list = new ArrayList<Object>();
}
for (int i = 0; i < list_item.size(); i++) {
Element item = (Element) list_item.get(i);
System.out.println("id:" + item.element("id").getText());
System.out.println("title:" + item.element("title").getText());
System.out.println("summary:" + item.element("summary").getText());
System.out.println("published:" + item.element("published").getText());
System.out.println("updated:" + item.element("updated").getText());
System.out.println("name:" + item.element("author").element("name").getText());
System.out.println("uri:" + item.element("author").element("uri").getText());
System.out.println("************************");
System.out.println();
System.out.println();
System.out.println();
System.out.println();
}
最后整个测试代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import java.io.File; import java.io.FileWriter; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /*** * 使用dom4j开源项目,需要引入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar包 * * @author ouxu * */ public class XmlHelper { public void readXmlByUrl() throws Exception { List<Object> list; URL url = new URL( "http://feed.cnblogs.com/blog/u/120107/rss" ); SAXReader reader = new SAXReader(); Document document = reader.read(url); Element rootElement = document.getRootElement(); List list_item = rootElement.elements( "entry" ); if (list_item.size() > 0 ) { list = new ArrayList<Object>(); } for ( int i = 0 ; i < list_item.size(); i++) { Element item = (Element) list_item.get(i); System.out.println( "id:" + item.element( "id" ).getText()); System.out.println( "title:" + item.element( "title" ).getText()); System.out.println( "summary:" + item.element( "summary" ).getText()); System.out.println( "published:" + item.element( "published" ).getText()); System.out.println( "updated:" + item.element( "updated" ).getText()); System.out.println( "name:" + item.element( "author" ).element( "name" ).getText()); System.out.println( "uri:" + item.element( "author" ).element( "uri" ).getText()); System.out.println( "************************" ); System.out.println(); System.out.println(); System.out.println(); System.out.println(); } } public static void main(String[] args) { try { new XmlHelper().readXmlByUrl(); } catch (Exception e) { e.printStackTrace(); } } } |
测试代码,运行通过,部分结果如下(由于数据比较多,一屏数据显示不完)
ok,目前,学习了dom4j项目的使用,也成功完成了一个小小的应用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步