关于读写XML文件到问题

关于读写XML文件到问题

老师,我在做XML文件的读写练习的时候,按照教学视频练习代码编写,可是打码本身没有语法报错,但是运行时候出现了一个unknow protocol的错误提示,提示错误是在第13行,也就是说我在创建Document对象的时候就发生错误了,可是我已经把相关包都导入进去了呀,对应xml文件也存在,这是怎么回事啊?

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

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


正在回答

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

3回答

同学你好,首先代码读取xml文件是没有问题的,可以重复多次读取xml文件中的内容。另外使用绝对路径也是可以的。至于写入程序报错,在同学的另一个问答中回复了,需要在写入后,使用writer.closer()将流关闭,将写的内容刷新到xml文件中。最后建议同学在创建文件及包时,不要使用中文命名,规范命名后,再使用绝对路径试试。

祝:学习愉快~


提问者 哆丶哆 2019-07-10 16:33:31
<?xml version="1.0" encoding="UTF-8"?>

<teaching-plan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="plan.xsd">
	<course id="TC001">
		<course-name>高等数学</course-name>
		<class-hour>36</class-hour>
		<exam-form>考试</exam-form>
	</course>
	<course id="TC002">
		<course-name>计算机二级</course-name>
		<class-hour>48</class-hour>
		<exam-form>上机考试</exam-form>
	</course>
	<course id="TC003">
		<course-name>汇编语言</course-name>
		<class-hour>106</class-hour>
		<exam-form>考试</exam-form>
	</course>
</teaching-plan>
package 从网页搭建入门JavaWeb.步骤三JavaWeb入门.XML入门;

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 XMLreader {

	public static void main(String[] args) {
		// String file = "d:/compiling_software/eclipse/eclipse/workspace/慕课网/src/从网页搭建入门JavaWeb/步骤三JavaWeb入门/XML入门/plan.xml";
		String file = "src/从网页搭建入门JavaWeb/步骤三JavaWeb入门/XML入门/plan.xml";
		SAXReader reader = new SAXReader();
		try {
			Document document = reader.read(file);
			Element root = document.getRootElement();
			List<Element> elements = root.elements("course");
			for (Element ele : elements) {
				Attribute att = ele.attribute("id");
				String id = att.getText();
				Element name = ele.element("course-name");
				String course_name = name.getText();
				Element hour = ele.element("class-hour");
				String class_hour = hour.getText();
				Element form = ele.element("exam-form");
				String exam_form = form.getText();
				System.out.println("课程ID:" + id);
				System.out.println("课程名称:" + course_name);
				System.out.println("课程课时:" + class_hour);
				System.out.println("考核方式:" + exam_form);
			}
		} catch (DocumentException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}

}


好帮手慕阿满 2019-07-09 18:37:58

同学你好,问一下同学的file中xml的路径是否正确,建议同学检查一下。或者同学使用相对路径再试试。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 哆丶哆 #1
    老师,我试了一下,相对路径可以的,可是为什么绝对路径不行啊?我绝对路径是直接从那个文件复制文件路径下来粘贴的,不会有错的。 另外,我很疑惑,用相对路径的时候,当前的java文件默认是在项目根目录(即和src文件夹在同一个文件夹)下开始找的,可是java文件不是被我放在src的里面好几层的包里了么,怎么会从项目根目录开始找呢? 这里的xml文件和java文件都在同一个包,相对路径不是“plan.xml”就可以了么?可是我测试运行成功的相对路径是这样的: "src/从网页搭建入门JavaWeb/步骤三JavaWeb入门/XML入门/plan.xml"
    2019-07-09 20:48:15
  • 提问者 哆丶哆 #2
    路径没有问题啊,我特地在同路径下创了个txt文件测试数据的读出,都可以呀。而且在第一次读xml文件的时候也可以正常读出,这不说明路径是正确的么?就是写入的那段代码不知道怎么回事,第一次写入的时候程序执行成功,可是xml文件居然是空的,第二次写入就报错了,当然也没法读,读取也报错
    2019-07-10 13:34:06
  • 好帮手慕阿满 回复 提问者 哆丶哆 #3
    建议同学将代码贴上来,方便我们具体测试,贴代码时记得贴在回答中,不要截图。祝:学习愉快~
    2019-07-10 14:52:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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