例子

<?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
 

你可能感兴趣的:(例子)