文件输出后的xml-schema失效

文件输出后的xml-schema失效

<?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>
<?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>
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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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