java web复习日记 day01

        博主是一个大四学生,于大二下学期和大三上学期自学java web,后在大三下和大四上因为考研荒废了很多技术知识,前段时间公布分数后没有考上研究生。于是决定利用20天的时间复习之前学习的java web知识,希望能赶上各学校春招的末班车。现在开此博客记录学习过程。

        因为之前学习时看的是传智播客方老师的视频,感觉很不错,于是这次准备重新看一遍。

       

------------------------------------------------------正文分割------------------------------------------------------------------

       刚才在看关于xml的知识,因为本科学习了html,所以感觉毫不费劲,只是中间出现了一个小插曲,.dtd约束文档必须保存为utf-8或者unicode格式的才能正确使用,不然会提示非法字符的警告。方老师自己写的xml解析工具(基于Mircosoft.XMLDOM)应该也可以被淘汰了,仅对ie有用,不过有点强迫症把代码粘贴如下:

(注:以下代码写在head标签中)

<!--创建xml文档解析器对象 -->
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
<!--开启xml校验-->
xmldoc.validateOnParse = "true";
<!--装载xml文档-->
xmldoc.load("book.xml");
<!--获取打印错误信息-->
document.write(xmldoc.parseError.reason);  
document.write(xmldoc.parseError.line); 

   看完视频发现dtd也过时了,学习目标就是能对照对着w3school的文档写出正确的xml,知识点就是属性,实体设计,没啥特别的。

    接下来就是XML的解析方式,视频里讲的是DOM和SAX,其中最大的区别就是SAX解析速度快,对内存占用少,只适合来查找数据,修改删除添加都不行,dom实现crud很方便,但是不适于大文件.XML解析器最骚的就是dom4j。

    第一天的任务是根据老师做的部分项目,做出完整项目,就是jaxp的增删查,查找的时候出了点问题,Node的getChildNodes()方法会因为XML文档不同子节点间换行而取到#text这个节点,很奇怪,而且我的程序一直无法取出节点的值。先把它贴出来,看有没有大神能看见,帮忙解答。

public Student find(String examid) throws ParserConfigurationException, SAXException, IOException{
		Document document = XmlUtils.getDoucment();
		NodeList list = document.getElementsByTagName("student");
		int index = -1;
		for(int i=0;i<list.getLength();i++){
			if(list.item(i).getAttributes().getNamedItem("examid").getNodeValue().equals(examid)){
				index = i;//可以改为getAttribute("examid");
			}
		}
		NodeList childNodes = list.item(index).getChildNodes();
                //取孩子节点的可以直接list.utem(index).getElementsByTagName("name");等等 
                String name = childNodes.item(0).getNodeValue();
		String location = childNodes.item(1).getNodeValue();
		double grade = Double.parseDouble(childNodes.item(2).getNodeValue());
               //这三处的getNodeValue()换成getTextContent()就OK了
                String idcard = list.item(index).getAttributes().getNamedItem("idcard").getNodeValue();
		//System.out.println(name);
		Student student = new Student();
		student.setName(name);
		student.setGrade(grade);
		student.setLocation(location);
		student.setIdcard(idcard);
		return student;
	}

       今天还是很充实的,很晚了,睡觉啦。

-------------------------------------十分钟后修订

刚才因为没解决问题很不爽,不能耻辱下机,于是乎又找了找问题的所在,终于找到了解决方法,原来

getNodeValue()和getTextContent()的区别是出问题的地方!!!!!!!

前者对于Node中的getNodeValue()方法只对Attribute,Text,Comment,CDATA等节点有意义,其他取出来都是null而getTextContent()方法则返回此节点及其后代的文本内容

终于明白了,气死我了,但是还是积累颇多!

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值