<?xml version="1.0" encoding="UTF-8"?>
<netctoss>
<dbstore single="false">
<class_name>tarena.dbstore.DBStoreImpl</class_name>
<constructor_method>constructor</constructor_method>
<args>java.util.Properties</args>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@192.168.2.100:1521:tarena</url>
<username>tarena</username>
<password>tarena</password>
</dbstore>
</netctoss>
/*
* 解析netct.xml,把文件的属性和节点取出来
*/
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;
public class Test
{
private Document document=null;
//负责初始化xml文件,产生一个相对应的Document
//Document就可看作时xml文件在内存的一个引用
//通过该引用我们可以对xml这个文件进行一系列的操作
//如读写操作
public void init(String xmlFile) throws Exception
{
//先获得一个DocumentBuilderFactory的实例(本身就时一个专门用来产生DocumentBuider的一个工厂)
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//拿到工厂实例后就可以生产实例--DocumentBuilder
DocumentBuilder builder=factory.newDocumentBuilder();
//DocumentBuilder可以解析xml文件,只要把相关的xml
//文件交给它的parse方法,那么它就会帮你解析,并且产生
//一个该文件在内存中的应用--Document
document=builder.parse(xmlFile);
}
//利用document对xml文件进行读操作,把xml的属性和值读出来,
//并打印在控制台
public void viewXML() throws Exception
{
//每个xml文件都有且仅有一个根元素,先把这个根元素的名字打出来
Element root=document.getDocumentElement();
System.out.println("根元素时:"+root.getNodeName());
//取父节点(相对于子节点来说)
//传入节点名字,返回节点链表,一般长度是1
//如果该xml文件有两个同名的节点,那么该节点链的长度才为2
NodeList list=root.getElementsByTagName("dbstore");
System.out.println("节点链的长度是:"+list.getLength());
//拿除该节点的第一个节点:item(0),0是下标
Node fatherNode=list.item(0);
System.out.println("父节点为:"+fatherNode.getNodeName());
//获取父节点的属性值
NamedNodeMap attributes=fatherNode.getAttributes();
//有可能有多个属性,因此该解析器把解析出来的属性装在一个集合里面
for(int i=0;i< attributes.getLength();i++)
{
Node attribute = attributes.item(i);
System.out.println("属性名为:"+attribute.getNodeName()+" 属性值为:"+attribute.getNodeValue());
}
NodeList childList=fatherNode.getChildNodes();
System.out.println("子节点链的长度为:"+childList.getLength());
//问题:怎么显示的元素数量为15?
//因为解析器把空格都解析成Element,所有子节点链的长度15
//空格不是元素,过滤空格
for(int j=0;j<childList.getLength();j++)
{
Node childNode=childList.item(j);
//如果该节点不是一个元素(Element)则应该过滤
if(childNode instanceof Element)
{
//System.out.println("节点的名字:"+childNode.getNodeName()+" 与之对应的节点值:"+childNode.getNodeValue());
//问题:为什么获取的value值都为null?
//这个getNodeValue()获取的只是 class_name>里面的属性值,要使用getFirtstChild()跳出<class_name>标签
System.out.println("节点的名字:"+childNode.getNodeName()+" 与之对应的节点值:"+childNode.getFirstChild().getNodeValue());
}
}
}
public static void main(String[] args) throws Exception
{
Test test=new Test();
test.init("netct.xml");
test.viewXML();
}
}
二、问题:
1.Exception in thread "main" java.net.MalformedURLException: no protocol: netct.xml
原因:weblogic有一个解析器具有特定的协议
解决:在CLASSPATH中删除weblogic.jar包或是在JDK中的lib删除weblogic.jar(在JDK中搜索出来)
2.在Test.java文件中System.out.println("子节点链的长度为:"+childList.getLength()),怎么显示的元素数量为15?
原因:解析器把空格都解析成Element,所有子节点链的长度15
解决:使用instanceof Element把空格过滤掉
3.在Test.java文件中System.out.println("节点的名字:"+childNode.getNodeName()+" 与之对应的节点值:"+childNode.getNodeValue())获取的value值怎么都是null?
原因:这个getNodeValue()获取的只是 class_name>里面的属性值,要使用getFirtstChild()跳出<class_name>标签
解决:使用getFirstChild()方法跳出标签
childNode.getFirstChild().getNodeValue())
三、CVS
1.代码仓库
2.目录→仓库(命令)
cvs -d /home/cvs init
3.创建仓库管理员
server_args = -f --allow-root=/home/openlab/hoho(目录) pserver(协议)
为服务添加端口:etc/services
(1)mkdir CVS
(2)为目录创建管理员
(3)切换目录管理员身份,初始化该CVS目录,边是完成一个仓库
cvs -d /home/CVS init
CVSROOT=/home/CVS
(4)提供网络服务(必须指定协议,端口号)
(5)利用管理员的身份添加用户
重启网络服务:/etc/init.d/xinetd restart
查看是否添加端口成功:netstat -lnp | grep 2403
加密:htpasswd -b cvspasswd adam adam
获取:cvs -d :pserver:[email protected]:2403/home/openlab/SD0601 checkout cvstest
上传:cvs commit -m "message" Test.java
解锁: cvs update -A Adam.java
1.2覆盖当前版本:cvs update -p -r 1.2 Adam.java > Adam.java