javaweb学习4

作业

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //动态绑定表单提交
        window.onload=function (){
            //得到form2的dom对象
            var form2 = document.getElementById("form2");
            //绑定onsubmit事件
            form2.onsubmit=function (){
                if(!(form2.username.value.length>=4 &&
                form2.username.value.length<=6)){
                    alert("用户长度不满足条件");
                    return  false;//判断用户名的长度合理性
                }
                if(form2.pwd.value.length!=6){
                    alert("密码长度不满足条件");
                    return false;
                }//判断密码长度合理性
                if(form2.pwd.value!=form2.pwd2.value){
                    alert("二次密码不相同");
                    return false;
                }
                var emailpattern=/^[\w-]+@([a-zA-Z]+\.)+[a-zA-Z]+$/;
                if(emailpattern.test(form2.email.value)){
                    //test方法去验证email内容是否满足正则表达式
                    alert("电子邮件格式不正确");
                    return false;
                }
                return true;
            }
        }


    </script>
</head>
<body>
<h1>注册用户</h1>
<form action="ok.html" id="form2">
    用户名:<input type="text" name="username"/>长度4-6<br/>
    密 码:<input type="password" name="pwd"/>长度6<br/>
    确认:<input type="password" name="pwd2"/>长度6<br/>
    电邮:<input type="text" name="email"/>满足基本格式<br/>
    <input type="submit" value="注册用户"/>
</form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

option对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function selectall(){
            var sport = document.getElementsByName("sport");
            //sport是nodelist类型的集合
            for(var i=0;i<sport.length;i++){
                sport[i].checked=true;//默认全部选中
            }
        }
        function selectnone(){
            var sport = document.getElementsByName("sport");
            //sport是nodelist类型的集合
            for(var i=0;i<sport.length;i++){
                sport[i].checked=false;//默认全部不选中
            }
        }
        function selectreserse() {
            var sport = document.getElementsByName("sport");
            //sport是nodelist类型的集合
            for (var i = 0; i < sport.length; i++) {
                // if (sport[i].checked) {
                //     sport[i].checked = false;
                // }
                // else
                // {
                //     sport[i].checked = true;//默认全部选中}
                // }
                sport[i].checked=!sport[i].checked;
            }
        }




    </script>
</head>
<body>
你会的运动项目:
<input type="checkbox" name="sport" value="zq" checked="checked">足球
<input type="checkbox" name="sport" value="tq" >排球
<input type="checkbox" name="sport" value="ppq" >乒乓球<br/>
<button onclick="selectall()">全选</button>
<button onclick="selectnone()">全不选</button>
<button onclick="selectreserse()">反选</button>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>发送到ok了</h1>
</body>
</html>

在这里插入图片描述

对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--    dom是文档对象模型,将文档中的标签,属性,文本,转换为对象来管理
当网页被加载时浏览器会创建页面文档对象模型
document他是一种树结构文档,有层级关系把所有标签都对象化-->
    <script type="text/javascript">
        function getvalue(){
            var elementById = document.getElementById("myheader");
            //    dom对象,对应h1标签的对象,浏览器是从上到下解析代码
            // alert(elementById);// HTMLHeadingElement
            alert(elementById.innerText);//获取到对象内包含的文本
            alert(elementById.innerHTML);//获取对象包含的所有内容
        }
        // window.οnlοad=function (){//动态绑定
        //     var myheader = document.getElementById("myheader");
        //     myheader.οnclick=function (){
        //         alert(myheader.innerText);
        //     }

        }



    </script>
</head>
<body>
<!--静态绑定点击事件-->
<h1 id="myheader" onclick="getvalue()"><div>韩顺平教育</div></h1>
<!--当点击h1标签内容时就会执行函数-->
<p>click on the header to alert its value</p>
</body>
</html>

在这里插入图片描述

猫狗转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function changimg(){
            var ig = document.getElementsByTagName("img");
            //ig是一个集合对象
            alert(ig);
            for(var i=0;i<ig.length;i++){
                ig[i].src="./img/"+(i+4)+".png";
            }
        }

    </script>
</head>
<body>
<img src="./img/1.png" height="100">
<img src="./img/2.png" height="100">
<img src="./img/3.png" height="100"><br/>
<input type="button" onclick="changimg()" value="
查看多少小猫并换成小狗"/>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

猫狗作业


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>课后作业猫狗切换</title>
    <script type="text/javascript">
        function changeImgs() {

            //对程序的结构进行一个调整
            //(1) input 增加id, 可以修改value
            var but1 = document.getElementById("but1");
            //1. 得到所有的img
            var imgs = document.getElementsByTagName("img");
            //老师说 imgs 是 HTMLCollections
            //alert("动物数量是= " + imgs.length);

            if(but1.value == "查看多少小猫,并切换成小狗") { //猫->狗

                //2. 修改src,遍历修改
                for (var i = 0; i < imgs.length; i++) {
                    imgs[i].src = "./img/" + (i + 4) + ".png";
                }
                but1.value = "查看多少小狗,并切换成小猫";

            } else if(but1.value == "查看多少小狗,并切换成小猫") {//狗->猫
                //2. 修改src,遍历修改
                for (var i = 0; i < imgs.length; i++) {
                    imgs[i].src = "./img/" + (i + 1) + ".png";
                }
                but1.value = "查看多少小猫,并切换成小狗";
            }

            //(2) 根据input 的 value值来决定是切换猫还是狗 if -- else if ---
            //(3) 其它自己先思考
        }
    </script>
</head>
<body>
<img src="./img/1.png" height="100">
<img src="./img/2.png" height="100">
<img src="./img/3.png" height="100">
<br/>
<input type="button" id="but1" onclick="changeImgs()"
       value="查看多少小猫,并切换成小狗"/>
</body>
</html>

添加小猫

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function addimg(){
            var img = document.createElement("img");
            alert(img);//HTMLImageElement获取到小猫对象
            img.src="./img/1.png";
            img.width="100";
            document.body.appendChild(img);//把对象添加到body里面去
        }
    </script>
</head>
<body>
<input type="button" onclick="addimg()" value="点击创建一个小猫"/>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

节点属性方法


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="css.css"/>
    <script type="text/javascript">
        //老师使用动态注册/绑定来演示
        window.onload = function () {

            // 先获取btn01的dom
            var btn01 = document.getElementById("btn01");
            btn01.onclick = function () {
                // 查找id=java节点
                var java = document.getElementById("java");
                alert("java节点文本=" + java.innerText);
            }

            // 查找所有option节点 小技巧: ctrl+home 直接到页面最上面 ctrl + end 页面最下
            var btn02 = document.getElementById("btn02");
            btn02.onclick = function () {
                //查找所有option节点
                //老师梳理(id-->getElementById name-->getElementsByName 元素标签名->getElementsByTagName()
                var options = document.getElementsByTagName("option");
                alert(options); // object HtmlCollection
                for (var i = 0; i < options.length; i++) {
                    alert("值= " + options[i].innerText);
                }
            }
            //查找name=sport的节点
            var btn03 = document.getElementById("btn03");
            btn03.onclick = function () {
                var sports = document.getElementsByName("sport");//NodeList
                for (var i = 0; i < sports.length; i++) {
                    //过滤
                    if (sports[i].checked) {//只弹出被选中的对象
                        alert("运动是= " + sports[i].value);
                    }
                }
            }

            //查找id=language 下所有li节点
            var btn04 = document.getElementById("btn04");
            btn04.onclick = function () {
                var lis = document.getElementById("language").getElementsByTagName("li");
                for (var i = 0; i < lis.length; i++) {
                    alert(lis[i].innerText);//<li>xxx</li> <input value="xx"/>
                }
            }

            //返回id=sel01 的所有子节点[3种方法]
            var btn05 = document.getElementById("btn05");
            btn05.onclick = function () {
                //var options = document.getElementById("sel01").getElementsByTagName("option");
                //alert(document.getElementById("sel01").childNodes.length);//11=>object text
                //老韩解读
                //1. 如果使用 document.getElementById("sel01").childNodes 获取的是object text 和 object htmloptionelement
                //2. 如果不希望得到text 对象,需要将所有的内容放在一行
                var childNodes = document.getElementById("sel01").childNodes;
                for (var i = 0; i < childNodes.length; i++) {
                    if (childNodes[i].selected) {
                        alert(i + " " + childNodes[i].innerText);
                    }
                }
                alert("======================================================")
                //还有一个以前方法
                //老韩解读
                //1. sel01 是 HtmlSelectElement => 本身就有集合特点
                var sel01 = document.getElementById("sel01");
                for (var i = 0; i < sel01.length; i++) {
                    alert(sel01[i].innerText);
                }
            }

            //返回id=sel01 的第一个子节点
            var btn06 = document.getElementById("btn06");
            btn06.onclick = function () {
                //除了上面的方法外,还可以直接使用属性firstChild
                var sel01 = document.getElementById("sel01");
                alert("xx=" + sel01.firstChild);//老师解读是按照 .childNodes 得到第一个子节点 //object text
                alert("yy=" + sel01[0]);//直接是得到第一个option节点 object htmloptionelement
            }

            //返回id=java 的父节点
            var btn07 = document.getElementById("btn07");
            btn07.onclick = function () {
                var java = document.getElementById("java");
                //alert(java.parentNode);// object HtmlUListElement.
                //alert(java.parentNode.innerHTML);//
                //alert(java.parentNode.childNodes.length);//4
                var childNodes = java.parentNode.childNodes;
                for (var i = 0; i < childNodes.length; i++) {
                    alert("语言= " + childNodes[i].innerText);//java php,c++ py,
                }
            }

            //返回id=ct 的前后兄弟节点
            var btn08 = document.getElementById("btn08");
            btn08.onclick = function () {
                //yyds
                var ct = document.getElementById("ct");
                alert(ct.previousSibling.innerText);//object text , 输出undefined
                alert(ct.previousSibling.previousSibling.innerText);//object htmloptionelement,艳红

                alert(ct.nextSibling.innerText);//object text, 输出undefined
                alert(ct.nextSibling.nextSibling.innerText); //object HtmlOptionElement, 输出春花
            }

            //设置#person的文本域
            var btn10 = document.getElementById("btn10");
            btn10.onclick = function () {
                var person = document.getElementById("person");
                person.innerText = "这是我们最新的介绍";
            }
        }

    </script>
</head>
<body>
<div id="total">
    <div class="inner">
        <P>
            你会的运动项目:
        </P>
        <input type="checkbox" name="sport" value="zq" checked="checked">足球
        <input type="checkbox" name="sport" value="tq">台球
        <input type="checkbox" name="sport" value="ppq">乒乓球 <br/>
        <hr/>
        <P>
            你当前女友是谁:
        </P>
        <select id="sel01">
            <option>---女友---</option>
            <option>艳红</option>
            <option id="ct" value="春桃菇凉">春桃</option>
            <option>春花</option>
            <option>桃红</option>
        </select>
        <hr/>
        <p>
            你的编程语言?
        </p>

        <ul id="language">
            <li id="java">Java~~~</li>
            <li>PHP</li>
            <li>C++</li>
            <li>Python</li>
        </ul>


        <br>
        <br>
        <hr/>
        <p>
            个人介绍:
        </p>
        <textarea name="person" id="person">个人介绍</textarea>
    </div>

</div>
<div id="btnList">
    <div>
        <button id="btn01">查找id=java节点</button>
    </div>
    <div>
        <button id="btn02">查找所有option节点</button>
    </div>
    <div>
        <button id="btn03">查找name=sport的节点</button>
    </div>
    <div>
        <button id="btn04">查找id=language 下所有li节点</button>
    </div>
    <div>
        <button id="btn05">返回id=sel01 的所有子节点</button>
    </div>
    <div>
        <button id="btn06">返回id=sel01 的第一个子节点</button>
    </div>
    <div>
        <button id="btn07">返回id=java 的父节点</button>
    </div>
    <div>
        <button id="btn08">返回id=ct 的前后兄弟节点</button>
    </div>
    <div>
        <button id="btn09">读取id=ct 的 value 属性值</button>
    </div>
    <div>
        <button id="btn10">设置#person的文本域</button>
    </div>
</div>
</body>
</html>

@CHARSET "UTF-8";

body {
	width: 800px;
	margin-left: auto;
	margin-right: auto;
}

button {
	width: 200px;
	margin-bottom: 10px;
	text-align: left;
}

#btnList {
	float:left;
}

#total{
	width: 450px;
	float:left;
}

ul{
	list-style-type: none;
	margin: 0px;
	padding: 0px;
}

.inner li{
	border-style: solid;
	border-width: 1px;
	padding: 5px;
	margin: 5px;
	float:left;
}

.inner{
	width:400px;

	border-width: 1px;
	margin-bottom: 10px;
	padding: 10px;
	float: left;
}

在这里插入图片描述

xml初步使用

<?xml version="1.0" encoding="utf-8" ?>
<!--
xml表示文件类型是xml
verson="1.0"版本
student是root根元素,自己来定
id是属性,name,age,gender是student的子元素,而student是students的
子元素
-->
<students>
    <student id="100">
        <name>jack</name>
        <age>10</age>
        <gender></gender>

    </student>
    <student>
        <name>mary</name>
        <age>18</age>
        <gender></gender>
    </student>
</students>

乌龟与兔

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>乌龟游戏</title>
    <script type="text/javascript">
        var cocktop=200;//定义公鸡的坐标
        var cockleft=200;
        //定义乌龟的高度和宽度
        var wuguiheight=67;
        var wuguiwidth=94;
        //定义公鸡的高度和宽度
        var cockheight=73;
        var cockwidth=76;

        function move(obj){
            //拿到dom对象
            var wugui=document.getElementById("wugui");

            //获取到wugui。style。left和wugui.style.top的值
            var wuguileft=wugui.style.left;
            var wuguitop=wugui.style.top;
            //将wuguileft的100px转换为数字,也就是将string变为number类型
            wuguitop=parseInt(wuguitop.substring(0,3));//截取字符串的前三个字符,也可写为
            // wuguileft.substring(0,wuguileft.indexOf("p"));
            wuguileft=parseInt(wuguileft.substring(0,3));
            // alert(wuguitop);
            if("向上走"==obj.value){
                wuguitop-=10;
                wugui.style.top=wuguitop+"px";
            }else if("向下走"==obj.value){
                wuguitop+=10;
                wugui.style.top=wuguitop+"px";
            }else if("向左走"==obj.value){
                wuguileft-=10;
                wugui.style.left=wuguileft+"px";
            }else if("向右走"==obj.value){
                wuguileft+=10;
                wugui.style.left=wuguileft+"px";
            }
            //得到乌龟和公鸡左上角的距离,纵向距离y
            var y=Math.abs(wuguitop-cocktop);
            //得到横向距离x
            var x=Math.abs(wuguileft-cockleft);
            var yy=0;//默认没有重叠
            var xx=0;//默认没有·重叠·
            if(wuguitop<cocktop){
                if(y<wuguiheight){
                    yy=1;
                }}else{//乌龟在下
                    if(y<cockheight){
                        yy=1;
                    }
                }
                if(wuguileft<cockleft){
                    if(x<wuguiwidth){
                        xx=1;
                    }}
                else {//乌龟在右边
                    if(x<cockwidth){
                        xx=1;
                    } }
                if(xx&yy){
                    alert("乌龟很厉害");
                    wugui.style.left="100px";
                    wugui.style.top="120px";
                }



        }

    </script>
</head>
<body>
<table border="1">
    <tr>
        <td></td>
        <td><input type="button" value="向上走" onclick="move(this)"/></td>
        <td></td>
    </tr>
    <tr>
        <td><input type="button" value="向左走" onclick="move(this)"/></td>
<!--        this表示你点击的button是一个dom对象可以获得属性和对象-->
        <td></td>
        <td><input type="button" value="向右走" onclick="move(this)"/></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="button" value="向下走" onclick="move(this)"/></td>
        <td></td>
    </tr>
</table>
<!--把乌龟放在一个div-->
<div id="wugui" style="position: absolute ;left:100px;top:120px;">
<!--    针对图片的左上角定位-->
    <img src="1.bmp" border="1" alt=""/>
</div>
<!--公鸡图片div-->
<div id="cock" style="left:200px;position:absolute;top:200px;">
    <img src="2.bmp" border="1" alt=""/>
</div>
</body>
</html>

在这里插入图片描述

xml语法

<?xml version="1.0" encoding="utf-8" ?>
<!--
    老韩解读
    1.属性值用双引号(")或单引号(')分隔(如果属性值中有',用"分隔;有",用'分隔)
    2.一个元素可以有多个属性,它的基本格式为:<元素名 属性名="属性值">
    3.特定的属性名称在同一个元素标记中只能出现一次
    4.属性值不能包括& 字符
-->
<students>
    <!--
        举例:
        id='01' 也是正确写法
        如果属性值有" 则使用' 包括属性 比如 id="xxx'yyy"
        如果属性值有' 则使用" 包括属性 比如 id='xxx"yyy'
        属性名在同一个元素标记只能出现一次 <stduent id="01" id="03"> 错误的
        属性值不能包括& 字符 比如: <stduent id="0&1"> 是错误的
    -->
    <student id="100">
        <name>jack</name>
        <age>10</age>
        <gender></gender>
    </student>
    <student id="200">
        <name>mary</name>
        <age>18</age>
        <gender></gender>
    </student>
</students>

<?xml version="1.0" encoding="utf-8" ?>
<!--
    老韩解读
    1.区分大小写,例如,<P><p>是两个不同的标记。
    2.不能以数字开头。
    3.不能包含空格。
    4.名称中间不能包含冒号(:)。
    5.如果标签单词需要间隔,建议使用下划线 比如 <book_title>hello</book_title>
-->
<students>
    <student id="100">
        <name>jack</name>
        <age>10</age>
        <gender></gender>
        <email>jack@sohu.com</email>
        <Email>jack2@sohu.com</Email>
        <job>java工程师</job>
        <book_name>三国</book_name>
    </student>
    <student id="200">
        <name>mary</name>
        <age>18</age>
        <gender></gender>
    </student>
</students>

语法2

<?xml version="1.0" encoding="utf-8"?>
<!--
    老韩解读
    <![CDATA[
  这里可以把你输入的字符原样显示,不会解析 xml
    ]]>
-->
<students>
    <stduent id="01">
        <name>tom</name>
        <gender></gender>
        <age>18</age>
        <!--
            举例说明:
            下面是一段js的代码片段. 直接放在<code></code>标签间,语法错误
            使用CDATA节来处理即可.
             <script data-compress=strip>
                function h(obj){
                obj.style.behavior='url(#default#homepage)';
                var a = obj.setHomePage('//www.baidu.com/');
                }
            </script>
        -->
    </stduent>
    <stduent id="02">
        <name>scott</name>
        <gender></gender>
        <age>17</age>
        <code>
            <!--如果希望把某些字符串,当做普通文本,使用CDATA包括 -->
            <![CDATA[
                <script data-compress=strip>
                function h(obj){
                obj.style.behavior='url(#default#homepage)';
                var a = obj.setHomePage('//www.baidu.com/');
                }
            </script>
            ]]>

        </code>
    </stduent>
</students>

xml对象

import org.dom4j.Document;
import org.dom4j.DocumentException;
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.jupiter.api.Test;

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

/**
 * @author 韩顺平
 * @version 1.0
 */
public class Dom4j_ {

    /**
     * 演示如何加载xml文件
     */
    @Test
    public void loadXML() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        //老师的代码技巧->debug 看看document对象的属性
        //分析了document对象的底层结构
        Document document = reader.read(new File("src/students.xml"));
        System.out.println(document);

    }

    /**
     * 遍历所有的student信息
     */
    @Test
    public void listStus() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        //老师的代码技巧->debug 看看document对象的属性
        //分析了document对象的底层结构
        Document document = reader.read(new File("src/students.xml"));

        //1. 得到rootElement, 你是OOP
        Element rootElement = document.getRootElement();
        //2. 得到rootElement的student Elements
        List<Element> students = rootElement.elements("student");
        //System.out.println(student.size());//2
        for (Element student : students) {//element就是Student元素/节点
            //获取Student元素 的name Element
            Element name = student.element("name");
            Element age = student.element("age");
            Element resume = student.element("resume");
            Element gender = student.element("gender");

            System.out.println("学生信息= " + name.getText() + " " + age.getText() +
                    " " + resume.getText() + " " + gender.getText());
        }

    }

    /**
     * 指定读取第一个学生的信息 就是 dom4j+xpath
     */
    @Test
    public void readOne() throws DocumentException {

        //得到一个解析器
        SAXReader reader = new SAXReader();
        //老师的代码技巧->debug 看看document对象的属性
        //分析了document对象的底层结构
        Document document = reader.read(new File("src/students.xml"));

        //1. 得到rootElement, 你是OOP
        Element rootElement = document.getRootElement();

        //2. 获取第一个学生
        Element student = (Element) rootElement.elements("student").get(1);
        //3. 输出该信息
        System.out.println("该学生的信息= " + student.element("name").getText() + " " +
                student.element("age").getText() + " " + student.element("resume").getText() +
                student.element("gender").getText());

        //4. 获取student元素的属性
        System.out.println("id= " + student.attributeValue("id"));
    }

    /**
     * 加元素(要求: 添加一个学生到xml中) [不要求,使用少,了解]
     * @throws Exception
     */
    @Test
    public void add() throws Exception {

        //1.得到解析器
        SAXReader saxReader = new SAXReader();
        //2.指定解析哪个xml文件
        Document document = saxReader.read(new File("src/students.xml"));


        //首先我们来创建一个学生节点对象
        Element newStu = DocumentHelper.createElement("student");
        Element newStu_name = DocumentHelper.createElement("name");
        //如何给元素添加属性
        newStu.addAttribute("id", "04");
        newStu_name.setText("宋江");
        //创建age元素
        Element newStu_age = DocumentHelper.createElement("age");
        newStu_age.setText("23");
        //创建resume元素
        Element newStu_intro = DocumentHelper.createElement("resume");
        newStu_intro.setText("梁山老大");

        //把三个子元素(节点)加到 newStu下
        newStu.add(newStu_name);
        newStu.add(newStu_age);
        newStu.add(newStu_intro);
        //再把newStu节点加到根元素
        document.getRootElement().add(newStu);
        //直接输出会出现中文乱码:
        OutputFormat output = OutputFormat.createPrettyPrint();
        output.setEncoding("utf-8");//输出的编码utf-8

        //把我们的xml文件更新
        // lets write to a file
        //new FileOutputStream(new File("src/myClass.xml"))
        //使用到io编程 FileOutputStream 就是文件字节输出流
        XMLWriter writer = new XMLWriter(
                new FileOutputStream(new File("src/students.xml")), output);
        writer.write(document);
        writer.close();

    }

    /**
     * //删除元素(要求:删除第一个学生) 使用少,了解
     * @throws Exception
     */
    @Test
    public void del() throws Exception {
        //1.得到解析器
        SAXReader saxReader = new SAXReader();
        //2.指定解析哪个xml文件
        Document document = saxReader.read(new File("src/students.xml"));
        //找到该元素第一个学生
        Element stu = (Element) document.getRootElement().elements("student").get(2);
        //删除元素
        stu.getParent().remove(stu);
//        //删除元素的某个属性
//        stu.remove(stu.attribute("id"));
        //更新xml
        //直接输出会出现中文乱码:
        OutputFormat output = OutputFormat.createPrettyPrint();
        output.setEncoding("utf-8");//输出的编码utf-8
        //把我们的xml文件更新
        XMLWriter writer = new XMLWriter(
                new FileOutputStream(new File("src/students.xml")), output);
        writer.write(document);
        writer.close();
        System.out.println("删除成功~");
    }


    /**
     * //更新元素(要求把所有学生的年龄+3) 使用少,了解
     * @throws Exception
     */
    @Test
    public void update() throws Exception {

        //1.得到解析器
        SAXReader saxReader = new SAXReader();
        //2.指定解析哪个xml文件
        Document document = saxReader.read(new File("src/students.xml"));
        //得到所有学生的年龄
        List<Element> students = document.getRootElement().elements("student");
        //遍历, 所有的学生元素的age+3
        for (Element student : students) {
            //取出年龄
            Element age = student.element("age");
            age.setText((Integer.parseInt(age.getText()) + 3) + "");
        }

        //更新
        //直接输出会出现中文乱码:
        OutputFormat output = OutputFormat.createPrettyPrint();
        output.setEncoding("utf-8");//输出的编码utf-8

        //把我们的xml文件更新
        XMLWriter writer = new XMLWriter(
                new FileOutputStream(new File("src/students.xml")), output);
        writer.write(document);
        writer.close();
        System.out.println("更新成功~");
    }
}

"C:\Program Files\Java\jdk1.8.0_192\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Users\Administrator\Desktop\idea\IntelliJ IDEA 2020.2\lib\idea_rt.jar=5194:C:\Users\Administrator\Desktop\idea\IntelliJ IDEA 2020.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Administrator\Desktop\idea\IntelliJ IDEA 2020.2\lib\idea_rt.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-launcher\1.4.2\junit-platform-launcher-1.4.2.jar;C:\Users\Administrator\Desktop\idea\IntelliJ IDEA 2020.2\plugins\junit\lib\junit5-rt.jar;C:\Users\Administrator\Desktop\idea\IntelliJ IDEA 2020.2\plugins\junit\lib\junit-rt.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_192\jre\lib\rt.jar;C:\Users\Administrator\IdeaProjects\untitled3\out\production\untitled3;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter\5.4.2\junit-jupiter-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.4.2\junit-jupiter-api-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\apiguardian\apiguardian-api\1.0.0\apiguardian-api-1.0.0.jar;C:\Users\Administrator\.m2\repository\org\opentest4j\opentest4j\1.1.1\opentest4j-1.1.1.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-commons\1.4.2\junit-platform-commons-1.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.4.2\junit-jupiter-params-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.4.2\junit-jupiter-engine-5.4.2.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-engine\1.4.2\junit-platform-engine-1.4.2.jar;C:\Users\Administrator\IdeaProjects\untitled3\lib\dom4j-1.6.1.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 c

2
小龙女19古墓派掌门人女
欧阳锋21白驼山,蛤蟆神功男
小龙女19古墓派掌门人女
01




Process finished with exit code 0

作业

<?xml version="1.0" encoding="UTF-8" ?>
<books>
    <book id="100">
        <name>西游记</name>
        <author>吴承恩</author>
        <price>80</price>
    </book>
    <book id="200">
        <name>三国演义</name>
        <author>吴冠中</author>
        <price>100</price>
    </book>
</books>
/**
 * @author 韩顺平
 * @version 1.0
 */
public class Book {
    private Integer id;
    private String name;
    private String author;
    private Double price;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

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

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

/**
 * @author 韩顺平
 * @version 1.0
 */
public class Homework {
    public static void main(String[] args) throws DocumentException {

        //1.得到解析器
        SAXReader saxReader = new SAXReader();
        //2.指定解析哪个xml文件
        Document document = saxReader.read(new File("src/books.xml"));

        //3.遍历所有的book元素
        List<Element> books = document.getRootElement().elements("book");
        for (Element book : books) {
            //取出book元素的所有信息
            Element name = book.element("name");
            Element author = book.element("author");
            Element price = book.element("price");
            String id = book.attributeValue("id");
            //创建成Book对象
            Book book1 = new Book();
            book1.setId(Integer.parseInt(id));
            book1.setName(name.getText());
            book1.setPrice(Double.parseDouble(price.getText()));
            book1.setAuthor(author.getText());
            System.out.println("book1对象信息= " + book1);
        }
    }
}

book1对象信息= Book{id=100, name='西游记', author='吴承恩', price=80.0}
book1对象信息= Book{id=200, name='三国演义', author='吴冠中', price=100.0}

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值