1、以key-value对存储的信息
代码中所需的信息,可以以key-valu对的形式写到配置文件中。如HardDiskProperties.properties放于src目录下
disk=c
capacity=8G
测试代码
public class BaseKeyValue {
public static void main(String[] args) throws Exception{
Properties pro=new Properties();
pro.load(BaseKeyValue.class.getClassLoader().getResourceAsStream("HardDiskProperties.properties"));
String diskStr=pro.getProperty("disk");
String capacityStr=pro.getProperty("capacity");
System.out.println("磁盘信息:盘符 "+diskStr+" ,容量 "+capacityStr);
}
}
2、1中的配置文件过于简单,所以xml就出现了。如果把信息写入到xml文件中,如HardDisk.xml,放于src目录下
<?xml version="1.0" encoding="UTF-8"?>
<HD>
<disk name="C">
<capacity>8G</capacity>
</disk>
</HD>
测试代码
public class TestJdom{
public static void main(String[] args) throws Exception{
SAXBuilder saxBuild=new SAXBuilder();
Document doc=saxBuild.build(TestJdomXPATH.class.getClassLoader().getResourceAsStream("HardDisk.xml"));
Element root=doc.getRootElement();
List list=root.getChildren();
for(int i=0;i<list.size();i++){
Element diskE=(Element)list.get(i);
String diskName=diskE.getAttributeValue("name");
String capacity=diskE.getChildText("capacity");
System.out.println("磁盘信息,分区 "+diskName+" ,容量 "+capacity);
}
}
}
3、有了XML数据的描述标准,人们自然就会想到应该有一种查询语言可以在XML中查找任意节点的数据,就像SQL语句可以在关系性数据库中执行查询操作一样,于是XQUERY和XPATH顺应潮流,应运而生。由于XQUERY较为复杂,使用不甚方便,XPATH渐渐成为主流,我们只需对XPATH进行学习,便可以应付所有的查询要求。
XPATH中一些有用的函数:
string concat (string, string, string*) | 联接两个字符串 |
boolean starts-with (string, string) | 判断某字符串是否以另一字符串开头 |
boolean contains (string, string) | 判断某字符串是否包含另一字符串 |
string substring (string, number, number) | 取子字符串 |
number string-length (string) | 测字符串长度 |
number sum (node-set) | 求和 |
number floor (number) | 求小于此数的最大整数值 |
number ceiling (number) | 求大于此数最小整数值 |
测试代码,除了需要基本的jdom.jar外,还需要下载jaxen.jar
public class TestJDomXpath {
public static void main(String[] args) throws Exception{
SAXBuilder saxBuilder=new SAXBuilder();
Document doc=saxBuilder.build(TestJDom.class.getClassLoader().getResourceAsStream("HardDisk.xml"));
Element root=doc.getRootElement();
List list=XPath.selectNodes(root, "/HD/disk");
for(int i=0;i<list.size();i++){
Element diskElement=(Element)list.get(i);
String diskName=diskElement.getAttributeValue("name");
String capacity = ( (Text) XPath.selectSingleNode(diskElement,
"//disk[@name='" + diskName + "']/capacity/text()")).getTextNormalize();
System.out.println("磁盘信息,分区 "+diskName+" ,容量 "+capacity);
}
}
}