• xml解析



    title: xml的解析
    tags:
    grammar_cjkRuby: true

    解析xml有三种方法
    1.原生的dom解析,这个方法不常用。
    2.dom4j开源库,还可以加上jaxen-1.1的jar包,适合xPath解析表达式。能读能写
    3.sax解析,这个适合大体积的文件,缺点是只能解析,而且只能顺序读。

    dom4j的主要api:

    读取xml文档	
    SAXReader reader = new SAXReader();
    InputStream in = Object.class.getResourceAsStream("/test.properties");
    Document doc = reader.read(in);
    或者
    Document doc = reader.read(new File("./src/contact.xml"));
    doc.read();//可以读取file,inputstream等
    //节点:
    Iterator  Element.nodeIterator();  //获取当前标签节点下的所有子节点
    
    //标签:
    Element  Document.getRootElement();  //获取xml文档的根标签		
    Element   ELement.element("标签名") //指定名称的第一个子标签
    Iterator<Element> Element.elementIterator("标签名");// 指定名称的所有子标签
    List<Element>	 Element.elements(); //获取所有子标签
    
    //属性:
    String   Element.attributeValue("属性名") //获取指定名称的属性值
    Attribute    Element.attribute("属性名");//获取指定名称的属性对象	
    Attribute.getName()  //获取属性名称
    Attibute.getValue()  //获取属性值
    List<Attribute>	 Element.attributes();  //获取所有属性对象
    Iterator<Attribute>		Element.attibuteIterator(); //获取所有属性对象
    
    //文本:
    Element.getText();  //获取当前标签的文本
    Element.elementText("标签名") //获取当前标签的指定名称的子标签的文本内容
    
    // 使用xpath方法
    List<Node>  selectNodes("xpath表达式");   查询多个节点对象
    Node       selectSingleNode("xpath表达式");  查询一个节点对象
    

    修改文件

    2.1 写出内容到xml文档
    XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
    wirter.write(Document);
    
    2.2 修改xml文档的API
    增加: 
        DocumentHelper.createDocument()  增加文档
        addElement("名称")  增加标签
        addAttribute("名称",“值”)  增加属性
    修改:
        Attribute.setValue("值")  修改属性值
        Element.addAtribute("同名的属性名","值")  修改同名的属性值
        Element.setText("内容")  修改文本内容
    删除
        Element.detach();  删除标签  
        Attribute.detach();  删除属性
    

    下面是一些实例代码:

    读取文件内容

    package gz.itcast.a_dom4j_read;
    
    import java.io.File;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    
    /**
     * 第二个dom4j读取xml文件内容
     * 节点
     * 标签
     * 属性
     * 文本
     * @author APPle
     *
     */
    public class Demo2 {
    	
    /**
     * 得到节点信息
     */
    @Test
    public void test1() throws Exception{
    	//1.读取xml文档,返回Document对象
    	SAXReader reader = new SAXReader();
    	Document doc = reader.read(new File("./src/contact.xml"));
    	
    	//2.nodeIterator: 得到当前节点下的所有子节点对象(不包含孙以下的节点)
    	Iterator<Node> it = doc.nodeIterator();
    	while(it.hasNext()){//判断是否有下一个元素
    		Node node = it.next();//取出元素
    		String name = node.getName();//得到节点名称
    		//System.out.println(name);
    		
    		//System.out.println(node.getClass());
    		//继续取出其下面的子节点
    		//只有标签节点才有子节点
    		//判断当前节点是否是标签节点
    		if(node instanceof Element){
    			Element elem = (Element)node;
    			Iterator<Node> it2 = elem.nodeIterator();
    			while(it2.hasNext()){
    				Node n2 = it2.next();
    				System.out.println(n2.getName());
    			}
    		}
    	}
    }
    
    /**
     * 遍历xml文档的所有节点
     * @throws Exception
     */
    @Test
    public void test2() throws Exception{
    	//1.读取xml文档,返回Document对象
    	SAXReader reader = new SAXReader();
    	Document doc = reader.read(new File("./src/contact.xml"));
    	//得到根标签
    	Element rooElem = doc.getRootElement();
    	getChildNodes(rooElem);
    }
    
    /**
     * 获取 传入的标签下的所有子节点
     * @param elem
     */
    private void getChildNodes(Element elem){
    	System.out.println(elem.getName());
    	//得到子节点
    	Iterator<Node> it = elem.nodeIterator();
    	while(it.hasNext()){
    		Node node = it.next();
    		
    		//1.判断是否是标签节点
    		if(node instanceof Element){
    			Element el = (Element)node;
    			//递归
    			getChildNodes(el);
    		}
    	};
    }
    
    /**
     * 获取标签
     */
    @Test
    public void test3() throws Exception{
    	//1.读取xml文档,返回Document对象
    	SAXReader reader = new SAXReader();
    	Document doc = reader.read(new File("./src/contact.xml"));
    	
    	//2.得到根标签
    	Element  rootElem = doc.getRootElement();
    	//得到标签名称
    	String name = rootElem.getName();
    	System.out.println(name);
    	
    	//3.得到当前标签下指定名称的第一个子标签
    	/*
    	Element contactElem = rootElem.element("contact");
    	System.out.println(contactElem.getName());
    	*/
    	
    	//4.得到当前标签下指定名称的所有子标签
    	/*
    	Iterator<Element> it = rootElem.elementIterator("contact");
    	while(it.hasNext()){
    		Element elem = it.next();
    		System.out.println(elem.getName());
    	}
    	*/
    	
    	//5.得到当前标签下的的所有子标签
    	List<Element> list = rootElem.elements();
    	//遍历List的方法
    	//1)传统for循环  2)增强for循环 3)迭代器
    	/*for(int i=0;i<list.size();i++){
    		Element e = list.get(i);
    		System.out.println(e.getName());
    	}*/
    	
    /*	for(Element e:list){
    		System.out.println(e.getName());
    	}*/
    	/*
    	Iterator<Element> it = list.iterator(); //ctrl+2 松开 l
    	while(it.hasNext()){
    		Element elem = it.next();
    		System.out.println(elem.getName());
    	}*/
    	
    	//获取更深层次的标签(方法只能一层层地获取)
    	Element nameElem = doc.getRootElement().
    				element("contact").element("name");
    	System.out.println(nameElem.getName());
    	
    }
    
    /**
     * 获取属性
     */
    @Test
    public void test4() throws Exception{
    	//1.读取xml文档,返回Document对象
    	SAXReader reader = new SAXReader();
    	Document doc = reader.read(new File("./src/contact.xml"));
    	
    	//获取属性:(先获的属性所在的标签对象,然后才能获取属性)
    	//1.得到标签对象
    	Element contactElem = doc.getRootElement().element("contact");
    	//2.得到属性
    	//2.1  得到指定名称的属性值
    	/*
    	String idValue = contactElem.attributeValue("id");
    	System.out.println(idValue);
    	*/
    	
    	//2.2 得到指定属性名称的属性对象
    	/*Attribute idAttr = contactElem.attribute("id");
    	//getName: 属性名称    getValue:属性值
    	System.out.println(idAttr.getName() +"=" + idAttr.getValue());*/
    	
    	//2.3 得到所有属性对象,返回LIst集合
    	/*List<Attribute> list = contactElem.attributes();
    	//遍历属性
    	for (Attribute attr : list) {
    		System.out.println(attr.getName()+"="+attr.getValue());
    	}*/
    	
    	//2.4 得到所有属性对象,返回迭代器
    	Iterator<Attribute> it = contactElem.attributeIterator();
    	while(it.hasNext()){
    		Attribute attr = it.next();
    		System.out.println(attr.getName()+"="+attr.getValue());
    	}
    	
    }
    
    /**
     * 获取文本
     */
    @Test
    public void test5() throws Exception{
    	//1.读取xml文档,返回Document对象
    	SAXReader reader = new SAXReader();
    				
    	Document doc = reader.read(new File("./src/contact.xml"));
    	
    	
    	/**
    	 * 注意: 空格和换行也是xml的内容
    	 */
    	String content = doc.getRootElement().getText();
    	System.out.println(content);
    	
    	
    	//获取文本(先获取标签,再获取标签上的文本)
    	Element nameELem = 
    		doc.getRootElement().element("contact").element("name");
    	//1. 得到文本
    	String text = nameELem.getText();
    	System.out.println(text);
    	
    	//2. 得到指定子标签名的文本内容
    	String text2 = 
    		doc.getRootElement().element("contact").elementText("phone");
    	System.out.println(text2);
    	
    }
    
    
    }
    

    第二个练习例子

    package gz.itcast.a_dom4j_read;
    
    import java.io.File;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.Text;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    /**
     * 练习-完整读取xml文档内容
     * @author APPle
     *
     */
    public class Demo3 {
    @Test
    public void test() throws Exception{
    	//读取xml文档
    	SAXReader reader = new SAXReader();
    	Document doc = 
    			reader.read(new File("./src/contact.xml"));
    	
    	//读取根标签
    	Element rootELem = doc.getRootElement();
    	
    	StringBuffer sb = new StringBuffer();
    	
    	getChildNodes(rootELem,sb);
    	
    	System.out.println(sb.toString());
    	
    }
    
    /**
     * 获取当前标签的所有子标签
     */
    private void getChildNodes(Element elem,StringBuffer sb){
    	//System.out.println(elem.getName());
    	
    	//开始标签ssss
    	sb.append("<"+elem.getName());
    	
    	//得到标签的属性列表
    	List<Attribute> attrs = elem.attributes();
    	if(attrs!=null){
    		for (Attribute attr : attrs) {
    			//System.out.println(attr.getName()+"="+attr.getValue());
    			sb.append(" "+attr.getName()+"=""+attr.getValue()+""");
    		}
    	}
    	sb.append(">");
    	
    	//得到文本
    	//String content = elem.getText();
    	//System.out.println(content);
    	Iterator<Node> it = elem.nodeIterator();
    	while(it.hasNext()){
    		Node node = it.next();
    		
    		//标签
    		if(node instanceof Element){
    			Element el = (Element)node;
    			getChildNodes(el,sb);
    		}
    		
    		//文本
    		if(node instanceof Text){
    			Text text = (Text)node;
    			sb.append(text.getText());
    		}
    	}
    	
    	//结束标签
    	sb.append("</"+elem.getName()+">");		
    	
    }
    }
    

    修改,创建xml

    package gz.itcast.a_dom4j_read;
    
    import java.io.File;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.Text;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    /**
     * 练习-完整读取xml文档内容
     * @author APPle
     *
     */
    public class Demo3 {
    @Test
    public void test() throws Exception{
    	//读取xml文档
    	SAXReader reader = new SAXReader();
    	Document doc = 
    			reader.read(new File("./src/contact.xml"));
    	
    	//读取根标签
    	Element rootELem = doc.getRootElement();
    	
    	StringBuffer sb = new StringBuffer();
    	
    	getChildNodes(rootELem,sb);
    	
    	System.out.println(sb.toString());
    	
    }
    
    /**
     * 获取当前标签的所有子标签
     */
    private void getChildNodes(Element elem,StringBuffer sb){
    	//System.out.println(elem.getName());
    	
    	//开始标签ssss
    	sb.append("<"+elem.getName());
    	
    	//得到标签的属性列表
    	List<Attribute> attrs = elem.attributes();
    	if(attrs!=null){
    		for (Attribute attr : attrs) {
    			//System.out.println(attr.getName()+"="+attr.getValue());
    			sb.append(" "+attr.getName()+"=""+attr.getValue()+""");
    		}
    	}
    	sb.append(">");
    	
    	//得到文本
    	//String content = elem.getText();
    	//System.out.println(content);
    	Iterator<Node> it = elem.nodeIterator();
    	while(it.hasNext()){
    		Node node = it.next();
    		
    		//标签
    		if(node instanceof Element){
    			Element el = (Element)node;
    			getChildNodes(el,sb);
    		}
    		
    		//文本
    		if(node instanceof Text){
    			Text text = (Text)node;
    			sb.append(text.getText());
    		}
    	}
    	
    	//结束标签
    	sb.append("</"+elem.getName()+">");		
    	
    }
    }
    

    package gz.itcast.a_dom4j_write;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    import org.dom4j.Document;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    /**
     * 讨论写出内容到xml文档的细节
     * @author APPle
     *
     */
    public class Demo2 {
    
    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
    	Document doc = new SAXReader().read(new File("./src/contact.xml"));
    	//指定文件输出的位置
    	FileOutputStream out = new FileOutputStream("e:/contact.xml");
    	/**
    	 * 1.指定写出的格式
    	 */
    	OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
    	//OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
    	/**
    	 * 2.指定生成的xml文档的编码
    	 *    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)
    	 *    结论: 使用该方法生成的xml文档避免中文乱码问题。
    	 */
    	format.setEncoding("utf-8");
    	
    	
    	//1.创建写出对象
    	XMLWriter writer = new XMLWriter(out,format);
    	
    	//2.写出对象
    	writer.write(doc);
    	//3.关闭流
    	writer.close();
    }
    
    }
    

    package gz.itcast.a_dom4j_write;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    import org.dom4j.Attribute;
    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;
    import org.junit.Test;
    
    /**
     * 修改xml内容
     * 增加:文档,标签 ,属性
     * 修改:属性值,文本
     * 删除:标签,属性
     * @author APPle
     *
     */
    public class Demo3 {
    
    /**
     * 增加:文档,标签 ,属性
     */
    @Test
    public void test1() throws Exception{
    	/**
    	 * 1.创建文档
    	 */
    	Document doc = DocumentHelper.createDocument();
    	/**
    	 * 2.增加标签
    	 */
    	Element rootElem = doc.addElement("contactList");
    	//doc.addElement("contactList");
    	Element contactElem = rootElem.addElement("contact");
    	contactElem.addElement("name");
    	/**
    	 * 3.增加属性
    	 */
    	contactElem.addAttribute("id", "001");
    	contactElem.addAttribute("name", "eric");
    	
    	//把修改后的Document对象写出到xml文档中
    	FileOutputStream out = new FileOutputStream("e:/contact.xml");
    	OutputFormat format = OutputFormat.createPrettyPrint();
    	format.setEncoding("utf-8");
    	XMLWriter writer = new XMLWriter(out,format);
    	writer.write(doc);
    	writer.close();
    }
    
    /**
     * 修改:属性值,文本
     * @throws Exception
     */
    @Test
    public void test2()	throws Exception{
    	Document doc = new SAXReader().read(new File("./src/contact.xml"));
    	
    	/**
    	 * 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值
    	 */
    	//1.1  得到标签对象
    	/*
    	Element contactElem = doc.getRootElement().element("contact");
    	//1.2 得到属性对象
    	Attribute idAttr = contactElem.attribute("id");
    	//1.3 修改属性值
    	idAttr.setValue("003");
    	*/
    	/**
    	 * 方案二: 修改属性值
    	 */
    	//1.1  得到标签对象
    	/*
    	Element contactElem = doc.getRootElement().element("contact");
    	//1.2 通过增加同名属性的方法,修改属性值
    	contactElem.addAttribute("id", "004");
    	*/
    	
    	/**
    	 * 修改文本 1.得到标签对象 2.修改文本
    	 */
    	Element nameElem = doc.getRootElement().
    		element("contact").element("name");
    	nameElem.setText("李四");
    	
    	
    	
    	FileOutputStream out = new FileOutputStream("e:/contact.xml");
    	OutputFormat format = OutputFormat.createPrettyPrint();
    	format.setEncoding("utf-8");
    	XMLWriter writer = new XMLWriter(out,format);
    	writer.write(doc);
    	writer.close();
    }
    
    
    /**
     * 删除:标签,属性
     * @throws Exception
     */
    @Test
    public void test3() throws Exception{
    	Document doc = new SAXReader().read(new File("./src/contact.xml"));
    	
    	/**
    	 * 1.删除标签     1.1 得到标签对象  1.2 删除标签对象    
    	 */
    	// 1.1 得到标签对象
    	/*
    	Element ageElem = doc.getRootElement().element("contact")
    				.element("age");
    	
    	//1.2 删除标签对象
    	ageElem.detach();
    	//ageElem.getParent().remove(ageElem);
    	*/
    	/**
    	 * 2.删除属性   2.1得到属性对象  2.2 删除属性
    	 */
    	//2.1得到属性对象
    	//得到第二个contact标签
    	Element contactElem = (Element)doc.getRootElement().
    		elements().get(1);
    	//2.2 得到属性对象
    	Attribute idAttr = contactElem.attribute("id");
    	//2.3 删除属性
    	idAttr.detach();
    	//idAttr.getParent().remove(idAttr);
    	
    	FileOutputStream out = new FileOutputStream("e:/contact.xml");
    	OutputFormat format = OutputFormat.createPrettyPrint();
    	format.setEncoding("utf-8");
    	XMLWriter writer = new XMLWriter(out,format);
    	writer.write(doc);
    	writer.close();
    }
    }
    

    xPath技术

    package gz.itcast.b_xpath;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    /**
     * 第一个xpath程序
     * @author APPle
     *
     */
    public class Demo1 {
    
    public static void main(String[] args) throws Exception{
    	/**
    	 * 需求: 删除id值为2的学生标签
    	 */
    	Document doc = new SAXReader().read(new File("e:/student.xml"));
    	
    	//1.查询id为2的学生标签
    	//使用xpath技术
    	Element stuElem = (Element)doc.selectSingleNode("//Student[@id='2']");
    	//2.删除标签
    	stuElem.detach();
    	
    	//3.写出xml文件
    	FileOutputStream out = new FileOutputStream("e:/student.xml");
    	OutputFormat format = OutputFormat.createPrettyPrint();
    	format.setEncoding("utf-8");
    	XMLWriter writer = new XMLWriter(out,format);
    	writer.write(doc);
    	writer.close();
    }
    
    }
    

    package gz.itcast.b_xpath;
    
    import java.io.File;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.Node;
    import org.dom4j.io.SAXReader;
    
    /**
     * 学习xPath表达式语法
     * @author APPle
     *
     */
    public class Demo2 {
    public static void main(String[] args) throws Exception {
    	Document doc = new SAXReader().read(new File("./src/contact.xml"));
    	
    	String xpath = "";
    	
    	/**
    	 * 1.  	/      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)
    	 */
    	xpath = "/contactList";
    	xpath = "/contactList/contact";
    	
    	/**
    	 * 2. //     相对路径       表示不分任何层次结构的选择元素。
    	 */
    	xpath = "//contact/name";
    	xpath = "//name";
    	
    	/**
    	 * 3. *      通配符         表示匹配所有元素
    	 */
    	xpath = "/contactList/*"; //根标签contactList下的所有子标签
    	xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)
    	
    	/**
    	 * 4. []      条件           表示选择什么条件下的元素
    	 */
    	//带有id属性的contact标签
    	xpath = "//contact[@id]";
    	//第二个的contact标签
    	xpath = "//contact[2]";
    	//选择最后一个contact标签
    	xpath = "//contact[last()]";
    	
    	/**
    	 * 5. @     属性            表示选择属性节点
    	 */
    	xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
    	xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
    	xpath = "//contact[@id='002']";//选择id属性值为002的contact标签
    	xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签
    	
    	/**
    	 *6.  text()   表示选择文本内容
    	 */
    	//选择name标签下的文本内容,返回Text对象
    	xpath = "//name/text()";
    	xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签
    	
    	
    	List<Node> list = doc.selectNodes(xpath);
    	for (Node node : list) {
    		System.out.println(node.toString());
    	}
    }
    
    }
    

    package gz.itcast.b_xpath;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.InputStreamReader;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /**
     * xpath案例: 模拟用户登录效果
     * @author APPle
     *
     */
    public class Demo3 {
    
    public static void main(String[] args)throws Exception{
    	//1.获取用户输入的用户名和密码
    	BufferedReader br = 
    			new BufferedReader(new InputStreamReader(System.in));
    	
    	System.out.println("请输入用户名:");
    	String name = br.readLine();
    	
    	System.out.println("请输入密码:");
    	String password = br.readLine();
    	
    	//2.到“数据库”中查询是否有对应的用户
    	//对应的用户:  在user.xml文件中找到一个
    	   //name属性值为‘用户输入’,且password属性值为‘用户输入’的user标签
    	Document doc = new SAXReader().read(new File("./src/user.xml"));
    	Element userElem = (Element)doc.selectSingleNode("//user[@name='" +name +"' and @password='"+password+"']");
    	
    	if(userElem!=null){
    		//登录成功
    		System.out.println("登录成功");
    	}else{
    		//登录失败
    		System.out.println("登录失败");
    	}
    }
    
    }
    

    package gz.itcast.b_xpath;

    import java.io.File;
    import java.util.Iterator;
    import java.util.List;

    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;

    /**

    • 使用xpath技术读取一个规范的html文档
    • @author APPle

    */
    public class Demo4 {

    public static void main(String[] args) throws Exception{
    	Document doc = new SAXReader().read(new File("./src/personList.html"));
    	//System.out.println(doc);
    	
    	//读取title标签
    	Element titleElem = (Element)doc.selectSingleNode("//title");
    	String title = titleElem.getText();
    	System.out.println(title);
    	
    	/**
    	 * 练习:读取联系人的所有信息
    	 * 按照以下格式输出:
    	 * 		 编号:001 姓名:张三 性别:男 年龄:18 地址:xxxx 电话: xxxx
    	 *       编号:002 姓名:李四 性别:女 年龄:20 地址:xxxx 电话: xxxx
    	 *       ......
    	 */
    	//1.读取出所有tbody中的tr标签
    	List<Element> list = (List<Element>)doc.selectNodes("//tbody/tr");
    	//2.遍历
    	for (Element elem : list) {
    		//编号
    		//String id = ((Element)elem.elements().get(0)).getText();
    		String id = elem.selectSingleNode("td[1]").getText();
    		//姓名
    		String name = ((Element)elem.elements().get(1)).getText();
    		//性别
    		String gender = ((Element)elem.elements().get(2)).getText();
    		//年龄
    		String age = ((Element)elem.elements().get(3)).getText();
    		//地址
    		String address = ((Element)elem.elements().get(4)).getText();
    		//电话
    		String phone = ((Element)elem.elements().get(5)).getText();
    		
    		System.out.println("编号:"+id+"	姓名:"+name+"	性别:"+
    							gender+"	年龄:"+
    							age+"	地址:"+address+
    							"	电话:"+phone);
    	}
    }
    

    }

    不积跬步,无以至千里,不积小流,无以成江海! 实践则生,空谈则死!
  • 相关阅读:
    IntelliJ IDEA maven库下载依赖包速度慢的问题
    安装 PHP
    秒杀怎么样才可以防止超卖?基于mysql的事务和锁实现
    MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)
    架构师之路16年精选50篇
    基于ELK和Python搭建简单的监控告警系统
    MySQL5.7 利用keepalived来实现mysql双主高可用方案的详细过程
    在线数据迁移
    jedisLock—redis分布式锁实现
    Intellij IDEA 最新旗舰版注册激活破解(2018亲测,可用)
  • 原文地址:https://www.cnblogs.com/renboqie/p/5571741.html
Copyright © 2020-2023  润新知