`
yangzhiyong77
  • 浏览: 966933 次
文章分类
社区版块
存档分类
最新评论

test

 
阅读更多

List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>

JAVA平台提供了两个类:StringStringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGetdoPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations),具体可参阅w3c官方网站文档http://www.w3.org获取更多信息。
XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假设我们XML的内容和结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<name>ddviplinux</name>
<sex>m</sex>
<age>30</age>
</employee>
</employees>


本文使用JAVA语言来实现DOM与SAX的XML文档生成与解析。
首先定义一个操作XML文档的接口XmlDocument 它定义了XML文档的建立与解析的接口。

package com.alisoft.facepay.framework.bean;
/**
*
* @author hongliang.dinghl
* 定义XML文档建立与解析的接口
*/
public interface XmlDocument {
/**
* 建立XML文档
* @param fileName 文件全路径名称
*/
public void createXml(String fileName);
/**
* 解析XML文档
* @param fileName 文件全路径名称
*/
public void parserXml(String fileName);
}


1.DOM生成和解析XML文档
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
package com.alisoft.facepay.framework.bean;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
*
* @author hongliang.dinghl
* DOM生成与解析XML文档
*/
public class DomDemo implements XmlDocument {

private Document document;

private String fileName;

public void init() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
this.document = builder.newDocument();
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
}
}

public void createXml(String fileName) {

Element root = this.document.createElement("employees");
this.document.appendChild(root);
Element employee = this.document.createElement("employee");
Element name = this.document.createElement("name");
name.appendChild(this.document.createTextNode("丁宏亮"));
employee.appendChild(name);
Element sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("m"));
employee.appendChild(sex);
Element age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("30"));
employee.appendChild(age);
root.appendChild(employee);

TransformerFactory tf = TransformerFactory.newInstance();
try {
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("生成XML文件成功!");
} catch (TransformerConfigurationException e) {

System.out.println(e.getMessage());
} catch (IllegalArgumentException e) {

System.out.println(e.getMessage());
} catch (FileNotFoundException e) {

System.out.println(e.getMessage());
} catch (TransformerException e) {

System.out.println(e.getMessage());
}

}

public void parserXml(String fileName) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(fileName);
NodeList employees = document.getChildNodes();
for (int i = 0; i < employees.getLength(); i++) {
Node employee = employees.item(i);
NodeList employeeInfo = employee.getChildNodes();
for (int j = 0; j < employeeInfo.getLength(); j++) {
Node node = employeeInfo.item(j);
NodeList employeeMeta = node.getChildNodes();
for (int k = 0; k < employeeMeta.getLength(); k++) {
System.out.println(employeeMeta.item(k).getNodeName()
+ ":" + employeeMeta.item(k).getTextContent());
}
}
}
System.out.println("解析完毕");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
} catch (SAXException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
}

}


}

2.SAX生成和解析XML文档
为解决DOM的问题,出现了SAX。SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;
Java代码
  1. packagecom.alisoft.facepay.framework.bean;
  2. importjava.io.FileInputStream;
  3. importjava.io.FileNotFoundException;
  4. importjava.io.IOException;
  5. importjava.io.InputStream;
  6. importjavax.xml.parsers.ParserConfigurationException;
  7. importjavax.xml.parsers.SAXParser;
  8. importjavax.xml.parsers.SAXParserFactory;
  9. importorg.xml.sax.Attributes;
  10. importorg.xml.sax.SAXException;
  11. importorg.xml.sax.helpers.DefaultHandler;
  12. /**
  13. *
  14. *@authorhongliang.dinghl
  15. *SAX文档解析
  16. */
  17. publicclassSaxDemoimplementsXmlDocument{
  18. publicvoidcreateXml(StringfileName){
  19. System.out.println("<<"+filename+">>");
  20. }
  21. publicvoidparserXml(StringfileName){
  22. SAXParserFactorysaxfac=SAXParserFactory.newInstance();
  23. try{
  24. SAXParsersaxparser=saxfac.newSAXParser();
  25. InputStreamis=newFileInputStream(fileName);
  26. saxparser.parse(is,newMySAXHandler());
  27. }catch(ParserConfigurationExceptione){
  28. e.printStackTrace();
  29. }catch(SAXExceptione){
  30. e.printStackTrace();
  31. }catch(FileNotFoundExceptione){
  32. e.printStackTrace();
  33. }catch(IOExceptione){
  34. e.printStackTrace();
  35. }
  36. }
  37. }
  38. classMySAXHandlerextendsDefaultHandler{
  39. booleanhasAttribute=false;
  40. Attributesattributes=null;
  41. publicvoidstartDocument()throwsSAXException{
  42. System.out.println("文档开始打印了");
  43. }
  44. publicvoidendDocument()throwsSAXException{
  45. System.out.println("文档打印结束了");
  46. }
  47. publicvoidstartElement(Stringuri,StringlocalName,StringqName,
  48. Attributesattributes)throwsSAXException{
  49. if(qName.equals("employees")){
  50. return;
  51. }
  52. if(qName.equals("employee")){
  53. System.out.println(qName);
  54. }
  55. if(attributes.getLength()>0){
  56. this.attributes=attributes;
  57. this.hasAttribute=true;
  58. }
  59. }
  60. publicvoidendElement(Stringuri,StringlocalName,StringqName)
  61. throwsSAXException{
  62. if(hasAttribute&&(attributes!=null)){
  63. for(inti=0;i<attributes.getLength();i++){
  64. System.out.println(attributes.getQName(0)
  65. +attributes.getValue(0));
  66. }
  67. }
  68. }
  69. publicvoidcharacters(char[]ch,intstart,intlength)
  70. throwsSAXException{
  71. System.out.println(newString(ch,start,length));
  72. }
  73. }

3.DOM4J生成和解析XML文档
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
Java代码
  1. packagecom.alisoft.facepay.framework.bean;
  2. importjava.io.File;
  3. importjava.io.FileWriter;
  4. importjava.io.IOException;
  5. importjava.io.Writer;
  6. importjava.util.Iterator;
  7. importorg.dom4j.Document;
  8. importorg.dom4j.DocumentException;
  9. importorg.dom4j.DocumentHelper;
  10. importorg.dom4j.Element;
  11. importorg.dom4j.io.SAXReader;
  12. importorg.dom4j.io.XMLWriter;
  13. /**
  14. *
  15. *@authorhongliang.dinghl
  16. *Dom4j生成XML文档与解析XML文档
  17. */
  18. publicclassDom4jDemoimplementsXmlDocument{
  19. publicvoidcreateXml(StringfileName){
  20. Documentdocument=DocumentHelper.createDocument();
  21. Elementemployees=document.addElement("employees");
  22. Elementemployee=employees.addElement("employee");
  23. Elementname=employee.addElement("name");
  24. name.setText("ddvip");
  25. Elementsex=employee.addElement("sex");
  26. sex.setText("m");
  27. Elementage=employee.addElement("age");
  28. age.setText("29");
  29. try{
  30. WriterfileWriter=newFileWriter(fileName);
  31. XMLWriterxmlWriter=newXMLWriter(fileWriter);
  32. xmlWriter.write(document);
  33. xmlWriter.close();
  34. }catch(IOExceptione){
  35. System.out.println(e.getMessage());
  36. }
  37. }
  38. publicvoidparserXml(StringfileName){
  39. FileinputXml=newFile(fileName);
  40. SAXReadersaxReader=newSAXReader();
  41. try{
  42. Documentdocument=saxReader.read(inputXml);
  43. Elementemployees=document.getRootElement();
  44. for(Iteratori=employees.elementIterator();i.hasNext();){
  45. Elementemployee=(Element)i.next();
  46. for(Iteratorj=employee.elementIterator();j.hasNext();){
  47. Elementnode=(Element)j.next();
  48. System.out.println(node.getName()+":"+node.getText());
  49. }
  50. }
  51. }catch(DocumentExceptione){
  52. System.out.println(e.getMessage());
  53. }
  54. System.out.println("dom4jparserXml");
  55. }
  56. }
  57. 4.JDOM生成和解析XML
  58. 为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。
  59. <prename="code"class="java">packagecom.alisoft.facepay.framework.bean;
  60. importjava.io.FileNotFoundException;
  61. importjava.io.FileOutputStream;
  62. importjava.io.IOException;
  63. importjava.util.List;
  64. importorg.jdom.Document;
  65. importorg.jdom.Element;
  66. importorg.jdom.JDOMException;
  67. importorg.jdom.input.SAXBuilder;
  68. importorg.jdom.output.XMLOutputter;
  69. /**
  70. *
  71. *@authorhongliang.dinghl
  72. *JDOM生成与解析XML文档
  73. *
  74. */
  75. publicclassJDomDemoimplementsXmlDocument{
  76. publicvoidcreateXml(StringfileName){
  77. Documentdocument;
  78. Elementroot;
  79. root=newElement("employees");
  80. document=newDocument(root);
  81. Elementemployee=newElement("employee");
  82. root.addContent(employee);
  83. Elementname=newElement("name");
  84. name.setText("ddvip");
  85. employee.addContent(name);
  86. Elementsex=newElement("sex");
  87. sex.setText("m");
  88. employee.addContent(sex);
  89. Elementage=newElement("age");
  90. age.setText("23");
  91. employee.addContent(age);
  92. XMLOutputterXMLOut=newXMLOutputter();
  93. try{
  94. XMLOut.output(document,newFileOutputStream(fileName));
  95. }catch(FileNotFoundExceptione){
  96. e.printStackTrace();
  97. }catch(IOExceptione){
  98. e.printStackTrace();
  99. }
  100. }
  101. publicvoidparserXml(StringfileName){
  102. SAXBuilderbuilder=newSAXBuilder(false);
  103. try{
  104. Documentdocument=builder.build(fileName);
  105. Elementemployees=document.getRootElement();
  106. ListemployeeList=employees.getChildren("employee");
  107. for(inti=0;i<employeeList.size();i++){
  108. Elementemployee=(Element)employeeList.get(i);
  109. ListemployeeInfo=employee.getChildren();
  110. for(intj=0;j<employeeInfo.size();j++){
  111. System.out.println(((Element)employeeInfo.get(j)).getName()+":"+((Element)employeeInfo.get(j)).getValue());
  112. }
  113. }
  114. }catch(JDOMExceptione){
  115. e.printStackTrace();
  116. }catch(IOExceptione){
  117. e.printStackTrace();
  118. }
  119. }
  120. }
  121. </pre>

 extends Applet


功能: 生成随机的字母和数字混杂的字符串

函数的入参是生成的随机字符串的长度

Java代码
  1. publicStringgetCharacterAndNumber(intlength)
  2. {
  3. Stringval="";
  4. Randomrandom=newRandom();
  5. for(inti=0;i<length;i++)
  6. {
  7. StringcharOrNum=random.nextInt(2)%2==0?"char":"num";//输出字母还是数字
  8. if("char".equalsIgnoreCase(charOrNum))//字符串
  9. {
  10. intchoice=random.nextInt(2)%2==0?65:97;//取得大写字母还是小写字母
  11. val+=(char)(choice+random.nextInt(26));
  12. }
  13. elseif("num".equalsIgnoreCase(charOrNum))//数字
  14. {
  15. val+=String.valueOf(random.nextInt(10));
  16. }
  17. }
  18. returnval;
  19. }

第二种随即生成

1.
//根据不同的难度产生随机字母和数字
for(int i=0; readomNumStart.length()<4; i++) {
if(difficult == 1) {

//产生随机的0-9的数字
a = String.valueOf((int)(Math.random() * 10)) ;
}
if(difficult == 2) {

//在0-9和a,b,c,d中随机产生。
String[] readomWord = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d"};
int readomWordIndex = (int)(Math.random() * 13);
a = readomWord[readomWordIndex];
}
if(difficult == 3) {

//产生随机的字母
char readomLetter = (char)(Math.random ()*26+'a');
a = String.valueOf(readomLetter) ;
}
if(difficult == 4) {

//产生随机的数字和字母的组合
String[] readomHard = new String[20];
int readomWordIndex = (int)(Math.random() * 19);
for(int j=0; j<20; j++) {
int readomWordNum = (int)(Math.random() * 10);
char readomLetter = (char)(Math.random ()*26+'a');
if(readomWordNum % 2 == 0) {
readomHard[j] = readomWordNum + "";
}else{
readomHard[j] = String.valueOf(readomLetter);
}
}
a = readomHard[readomWordIndex];
}


2.
char[] numbersAndLetters = ("0123456789" + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
char[] randBuffer = new char[length];
for (int i = 0; i < randBuffer.length; i++) {
randBuffer[i] = numbersAndLetters[randGen.nextInt(numbersAndLetters.length)];
}
return new String(randBuffer);

分享到:
评论

相关推荐

    parasoft c++Test9.0破解

    最好用的单元测试工具,除了这里你是找不到9.0版本的破解的。 ... 独立的版本破解: ... 把lic_client.jar复制到 ... c:\Program Files (x86)\Parasoft\Test\9.0\plugins\...这个是:plugins-c++Test For Visual Studio.7z

    Parasoft c++Test9.0破解文件

    c:\Program Files (x86)\Parasoft\C++test for Visual Studio\9.0\plugins\ 这个目录中 把plugins-Test for Virsual Studio.7z 中的文件覆盖到 c:\Program Files (x86)\Parasoft\Test for Visual Studio\9.0\...

    eNetTest 网管内网单机测速工具

    eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速...

    C++Test学习文档

    C++test 文档库包含以下各项: • C++test 用户手册 ( 当前指南): C++test 用户手册(当前指南):解释如何使用在 Eclipse 上构 建的 C++test 功能(如果您拥有单机版的 C++test),或者如何使用添加到 Eclipse 的...

    test3test3test3test3test3test3

    test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3test3

    Enabler Test Specification for SUPL V2.0

    This document describes in detail available test cases for SUPL V2.0, OMA-ERP-SUPL-V2_0. URL:http://www.openmobilealliance.org/ The test cases are split in two categories, conformance and ...

    C++ Test 7.2及9.2版本(附带许可证)学习资料!!

    内含 C++Test 两个版本的软件 、 VC++6.0(可以在Win 10 环境使用) 、 C++ Test 许可证书 、C语言编码规范(试用) 详细情况请见文章里面包含使用该软件的步骤及配置过程...

    c++ test9.5破解工具

    1.安装,安装时不能开vs,会安装失败 2.尽量选择独立安装一个配置cpptest_9_5 2.复制xtest.lic.client.dll...X:\Program Files\Parasoft\Test for Visual Studio\9.5\plugins\com.parasoft.xtest.libs.vstudio\Parasoft

    test.py_pythontest_python_

    test python programming language

    Cracking the GRE Mathematics Subject Test 4th Edition.pdf

    Getting a high score on the GRE Math Subject Test isn’t about memorizing everything there is to know about math–it’s about targeting your test preparation. We teach you only the information you’ll...

    software test automation effective use of test execution 自动化测试

    software test automation effective use of test execution 自动化测试

    LMS_Test.Lab中文操作指南.pdf

    LMS Test Lab是一款综合全面的振动噪声试验解决方案,其独特的工作流程设计界面,使得LMS Test Lab为系统的易用性、高效率和数据一致性确立了新的标准。为未来的振动噪声试验方式,提供了新的突破。 LMS Test Lab ...

    [Test Studio] 软件测试入门教程 (Test Studio 实现) (英文版)

    Embark on the exciting journey of test automation, execution, and reporting in Test Studio with this practical tutorial Overview Learn to use Test Studio to design and automate tests valued with ...

    C++test V1.3序列号

    C++test序列号 V1.3 C++Test是一个C/C++单元级测试工具,自动测试C/C++类、函数或部件,而不需要编写测试用例、测试驱动程序或桩调用代码。C++Test能够自动测试代码构造(白盒测试)、测试代码的功能性(黑盒测试)和...

    Building a Successful Board-Test Strategy 2nd Edition

    Building a Successful Board-Test Strategy A successful test strategy is a byproduct of overall product life-cycle management. Anyone building such a strategy must consider the product's development, ...

    IPv6_Ready Self_Test

    Test Specification: 4.0.6 Self Test Tool: 5.0.0 Interoperability Test Scenario: 4.0.4 If you are going to run test from now, please use the newest version. However, in case the test specification ...

    c++test 中文使用说明

    C++Test是一个C/C++单元测试工具,自动测试任何C/C++类、函数或部件,而不需要您编写一个测试用例、测试驱动程序或桩调用。C++Test能够自动测试代码构造(白盒测试)、测试代码的功能性(黑盒测试)和维护代码的完整...

    workTest.rar

    从e:\mysql\test.sql中将文件中的SQL语句导入数据库中: 1.从命令行进入mysql,然后用命令CREATE DATABASE test2;创建数据库test2。 2.退出mysql 可以输入命令exit;或者quit; 3.在CMD中输入下列命令: c:\&gt;...

    Parasoftc++ Test 9.0破解文件

    最好用的单元测试工具,除了这里你是找不到9.0版本的破解的。 ... 独立的版本破解: ... 把lic_client.jar复制到 ... c:\Program Files (x86)\Parasoft\Test\9.0\plugins\...这个是:( plugins-Test for Virsual Studio.7z )

    TestComplete 7 破解

    把程序目录bin下:用TestComplete替换掉原有TestComplete 然后启动替换后的程序。 首次登陆按照如下设置: User Name: Eternal Shield Company Name: HOMEZ, Inc. Registration Code: 558B8FDC-6BF62C26-F83BF6FF

Global site tag (gtag.js) - Google Analytics