文件输出后的xml-schema失效

文件输出后的xml-schema失效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<teaching-plan
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="plan.xsd">
    <course id="a1">
        <course-name>大学英语</course-name>
        <course-hour>20</course-hour>
        <exam-form>考试</exam-form>
    </course>
    <course id="a2">
        <course-name>高等数学</course-name>
        <course-hour>70</course-hour>
        <exam-form>考试</exam-form>
    </course>
    <course id="a3">
        <course-name>计算机应用基础</course-name>
        <course-hour>108</course-hour>
        <exam-form>上机考试</exam-form>
    </course>
</teaching-plan>
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
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="teaching-plan">
        <complexType>
            <sequence>
                <element name="course" maxOccurs="100">
                    <complexType>
                        <sequence>
                            <element name="course-name" type="string"></element>
                            <element name="course-hour">
                                <simpleType>
                                    <restriction base="integer">
                                        <minInclusive value="20"></minInclusive>
                                        <maxInclusive value="110"></maxInclusive>
                                    </restriction>
                                </simpleType>
                            </element>
                            <element name="exam-form" type="string"></element>
                        </sequence>
                        <attribute name="id" type="string" use="required"></attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
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
57
58
59
60
61
62
63
package com.imooc.dom4j;
 
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
 
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
public class planWriter {
    public void writerXml(){
        String flie="E:\\xml\\lXml\\bin\\plan-schema.xml";
//      String flie1="E:\\xml\\lXml\\bin\\plan-schema1.xml";
        SAXReader reader=new SAXReader();
        try {
            Document document=reader.read(flie);
            Element root=document.getRootElement();
            Element course=root.addElement("course");
            course.addAttribute("id""a5");
            course.addElement("course-name").setText("我不喜欢的语文");
            course.addElement("course-hour").setText("24");
            course.addElement("exam-form").setText("考试");
            Writer writer=new OutputStreamWriter(new FileOutputStream(flie),"UTF-8");
            document.write(writer);
            writer.close();
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public void readerXml() {
        String flie="E:\\xml\\lXml\\bin\\plan-schema.xml";
//      String flie1="E:\\xml\\lXml\\bin\\plan-schema1.xml";
        SAXReader reader=new SAXReader();
        try {
            Document document=reader.read(flie);
            Element root=document.getRootElement();
            List<Element> Course=root.elements("course");
            for(Element course:Course) {
            Attribute att=course.attribute("id");
            System.out.println(att.getText());
            System.out.println(course.elementText("course-name"));
            System.out.println(course.elementText("course-hour"));
            System.out.println(course.elementText("exam-form"));
            }
        catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        planWriter pw=new planWriter();
        pw.writerXml();
        pw.readerXml();
    }
 
}

http://img1.sycdn.imooc.com//climg/5d3083560001c64908670337.jpg

http://img1.sycdn.imooc.com//climg/5d3083b9000192ca10500461.jpg

图一为没输出前的状态

图二为输出后的状态.为何输出后的xml-shema失效了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2019-07-19 18:47:03

同学你好,这里读写xml文件后,在eclipse中打开xml即可,不需要重新拖入eclipse或者浏览器,在eclipse中是可以看到写入的节点,并且schema约束是生效的,如:

http://img1.sycdn.imooc.com//climg/5d319fa10001cd1807810451.jpg

祝:学习愉快~

好帮手慕阿满 2019-07-19 10:55:45

同学你好,实验同学的代码,即使输出后,schema约束也是有效的,建议同学输出后,查看一下schema约束是否还存在。

祝:学习愉快~


  • 提问者 慕设计2030095 #1
    输出后,有个很奇怪的现象,就是重新打开的xml文件和在eclipse上xml文件不一致,重新打开的xml文件(schema失效,但是通过java新增的数据都存在),eclipse上是(schema生效,但是java新增的数据未添加进去)
    2019-07-19 10:58:42
  • 好帮手慕阿满 回复 提问者 慕设计2030095 #2
    同学前边说的重新打开xml是怎样打开,在文件夹中使用txt或者写字板的方式打开吗?在eclipse中打开时写入的数据也是存在的。祝:学习愉快~
    2019-07-19 15:31:06
  • 提问者 慕设计2030095 回复 好帮手慕阿满 #3
    重新打开是把xml文件拖动到eclipse当中,或者拖动到浏览器中,会有两个同名的文件夹,一个是xml文件(schema失效,但是通过java新增的数据都存在),一个是schema生效,但是java新增的数据未添加进去
    2019-07-19 15:48:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码