ITPub博客

首页 > 应用开发 > Java > XML

XML

原创 Java 作者:笑平风 时间:2015-05-25 12:59:17 0 删除 编辑
XML
1. 一二三]]>  //将 这样的标签指定成文本
2. DTD
dtdtest.dtd






!ELEMENT 表示有什么元素
#PCDATA   表示只能是普通文本

a.xml

        SYSTEM 本地,PUBLIC 网络
<书架>
<书>
<书名>葵花宝典
<作者>刘刘3
<售价>1200


<书>
<书名>葵花宝典2
<作者>刘刘4
<售价>2200


<书>
<书名>葵花宝典3
<作者>刘刘5
<售价>3200




EMPTY 标签之间为空
出版社 CDATA #REQUIRED 
ISBN CDATA #MPLIED
>
CDATA 表示属性的取值为普通的文本
枚举   (一|二)
ID 表示属性的聚会不能重复

#REQUIRED:表示该属性必须出现 
#IMPLIED:表示该属性可有可无
#FIXED: 表示属性的取值是一个固定值
直接值:表示属性的取值为该默认值
3. DOM解析
DocumentbuilderFactory dbf = DocumentbuilderFactory.newInstance();
Documentbuilder db = dbf.newDocumentbuilder();
document document = db.parse("/src/books.xml");
NodeList nl = document.getElementsbyTagName("作者");
Node node = n1.item(1);
System.out.println(node.getNodeValue); //作者的值
System.out.println(node.getFirstChild().getNodeValue); //作者的子节点的值

4. sax解析

5. junit 单元测试
@Test
public void test1(){
int result = mm.add(10,20);
Assert.assertEquals(40,result);
}

@Test(excepted=java.lang.Exception.class)   //期望出异常,如果出现异常就正确,通过
public void test1(){
int result = mm.divide(10,20);
Assert.assertEquals(40,result);
}

@Test(timeout=1)  //程序运行1毫秒之内,否则不能通过


@Befor  在@Test的块执行之前之前被调用
@After  在@Test的块执行之后之后被调用
@BeforeClass 如果class中有多个@Test 则只调用一次,这里的方法只能是static
@AfterClass 如果class中有多个@Test 则只调用一次,这里的方法只能是static

5. dom4j 解析  要导入jar包dom4j-1.6.1.jar
SAXReader sa = new SAXReader();
Document doc = sa.read("src/LocList.xml");
Element root = doc.getRootElement();
List es = root.elements();
//Element e = es.get(3);
//Element firstCity = root.element("City");
//System.out.println(firstCity.elementText("Name"));  //取City下第一个Name标签的名字
for(Element ele:es){
treeWalk(ele);
}

OutputFormat format = OutputFormat.createPrettyPrint();
//OutputFormat format = OutputFormat.createCompactFormat();  //这个没有回车换行
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/LocList.xml"),format);
writer.write(doc);
writer.close();

6. Xpath  dom4j要用,要导包 jaxen-1.1-beta-6.jar
/AA/BB   按标签的层级关系取标签
/AAA/BBB[1]   如果有多个取第一个
/AAA/BBB[last()]   如果有多个取最后一个
//AA     没有层级关系 ,所有的AA标签都取
//@id      指所有的 id 属性

Node n = doc.selectSingLeNode("//City[last()]");
System.out.println(n.getText());


















来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29798713/viewspace-1670641/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-08-09

  • 博文量
    75
  • 访问量
    194550