如何在string.xml的内容中添加空格

如何在string.xml的内容中添加空格

  在strings.xml定义文字时,空格以 " " 表示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
南民族大学管理学院 学生实验报告 课程名称:  JSP程序设计 年  级:  2010级    专  业:信息管理与信息系统 姓 名: 学 号: 指导教师:     实验地点:管理学院综合实验室 20 学年至 20 学年度第 2 学期 第一章 JSP简介 实验 Tomcat服务器的安装与配置 一、实验目的 本实验的目的是让学生掌握怎样设置Web服务目录、怎样访问Web服务目录下的JSP页 面、怎样修改Tomcat服务器的端口号。 二、实验要求 1、将下载的apache-tomcat-6.0.13.zip解压到D盘,并进行调试。 2、用文本编辑器编写一个简单的JSP页面biao.jsp,并保存到Web服务目录。 三、实验结果 所运行的代码如下; biao.jsp <%@ page contentType="text/html;charset=GB2312"%> <HTML> <BODY BGCOLOR=YELLOW> <h3>乘法表<h3> <FONT Size=3> <% for(int j=1;j<=9;j++) { for(int i=1;i<=j;i++) { int n=i*j; out.print(i+"×"+j+"="+n+" "); } out.print("<br>"); } %> </FONT> </BODY> </HTML> biao.jsp页面 四、实验结果分析 1、默认的端口号为8080,若修改,在conf目录下的server.xml文件修改端口号。 2、设置虚拟目录。在conf目录下的server.xml</Host>前加入: <Context path="/**" docBase="路径" debug="0" reloadable="true/"> 3、Tomcat服务器必须保持启动。 第二章 JSP页面与JSP标记 实验1 JSP页面的基本结构 一、实验目的 本实验的目的是让学生掌握怎样在JSP页面使用成员变量,怎样使用Java程序片 、Java表达式。 二、实验要求 本实验将用户输入的单词按字典顺序排序。需要编写两个JSP页面,名字分别为i nputWord.jsp和showDictionary.jsp。 三、实验内容 1. inputWord.jsp页面有一个表单,用户通过该表单输入若干个单词,并提交给show Dictionary.jsp页面。 2. showDictionary.jsp负责排序单词,并将排序的全部单词显示给用户。 四、实验结果 实验所用代码如下: inputWord.jsp <%@ page contentType="text/html;charset=GB2312"%> <HTML> <BODY BGCOLOR=cyan> <FONT Size=3> <FORM action="showDictionary.jsp" method = get name=form> 请输入单词(用空格分隔):<INPUT type="text" name="word"> <BR><INPUT type="submit" value="送出" name=submit> </FORM> </BODY> </HTML> showDictionary.jsp <%@ page contentType="text/html;charset=GB2312"%> <%@ page import="java.util.*"%> <HTML> <BODY BGCOLOR=YELLOW> <FONT Size=3> <%! TreeSet<String>dictionary=new TreeSet<String>(); public void addWord(String s) { String word[] = s.split(" "); for(int i=0;i<word.length;i++) { dictionary.add(word[i]); } } %> <% String str = request.getParameter("word"); addWord(str); Iterator<String>te=dictionary.iterator(); while(te.hasNext()) { String word = te.next(); out.print(" "+word); } %> </FORM> </BODY> </HTML> inputWord.jsp页面 showDictionary.jsp页面 五、实验结果分析 1、jsp页面由html标记、jsp标记、成员变了和方法的声明、java程序片和java表达 式组成。 2、jsp页面的成员变量是被所有用户共享的变
BSQL Hacker v0.9.0.9文汉化绿色版 系统需要安装Microsoft .NET Framework,才能正常运行此程序。 程序说明: BSQL (Blind SQL) Hacker 是一个SQL自动注入工具,其设计的目的是希望能对任何的数据库进行SQL溢出注入。 BSQL Hacker的适用群体是那些对注入有经验的使用者和那些想进行自动SQL注入(特别是Blind SQL注入)的人群。 主要特点: 1,容易模式 一,SQL注入向导 二,支持自动攻击(数据库转储) (1)ORACLE (2)MSSQL (3)MySQL (实验阶段) 2,常规 一,快速和多线程 二,支持4种不同的SQL注入 (1)Bling SQL 注入 (2)基于时间的Bling SQL 注入 (3)深盲(Deep Blind) SQL注入(基于高级时间延迟) (4)基于错误的SQL注入 三,能够自动开始大多数基于Blind SQL注入的新SQL注入方法。 四,支持正则签名 五,支持控制台和可视界面 六,支持 加载/保存 七,支持 标记/临时/查看状态 等等 八,支持会话共享 九,支持高级配置 十,自动攻击模式,自动提取所有数据库结构和数据模式 3,更新/溢出储存室特点 一,类似Metasploit,但是支持溢出储存室 二,允许保存和共享SQL注入溢出 三,支持自动更新 四,溢出支持自定义可视界面(输入Cookie,输入URL等) 4,可视界面特点 一,加载和保持 二,支持模板和攻击文件(使用者可以保存会话并共享它们,模版的一些部分比如用户名,密码或者是cookis可以在可视界面显示) 三,可以查看真实的、虚假的响应和完整的HTML响应,包括时间和状态 5,连接相关 一,支持代理(支持身份验证代理) 二,支持NTLM, 基础验证,使用当前用户/程序的默认凭据 三,支持SSL协议(有效证书) 四,支持自定义文件头 6,注入点(仅仅是它们或者联合的一个) 一,Query String 二,Post 三,HTTP Headers 四,Cookies 7,其它 一,Post注入数据可以在保存到单独文件 二,导出XML (不稳定) 三,支持CSRF保护 某时的会话标记或者asp.net状态查看能够绕过通过代理页面等而被单独登陆会话使用。 这个软件仍然是一个试用版,已知问题 1,MySQL自动攻击是实验性的,有时可能不会正常工作。
TinyXML是一个简单小巧,可以很容易集成到其它程序的C++ XML解析器。 它能做些什么 简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。 XML的意思是“可扩展标记语言“(eXtensible Markup Language)。它允许你创建你自己的文档标记。在为浏览器标记文档方面HTML做得很好,然而XML允许你定义任何文档标记,比如可以为一个组织者应用程序定义一个描述“to do”列表的文档。 XML拥有一个结构化并且方便的格式,所有为存储应用程序数据而创建的随机文件格式都可以用XML代替,而这一切只需要一个解析器。 最全面正确的说明可以在http://www.w3.org/TR/2004/REC-xml-20040204/找到,但坦白地说,它很晦涩难懂。事实上我喜欢http://skew.org/xml/tutorial上关于XML的介绍。 有不同的方法可以访问和与XML数据进行交互。TinyXML使用文档对象模型(DOM),这意味着XML数据被解析成一个可被浏览和操作的C++对象,然后它可以被写到磁盘或者另一个输出流。你也可以把C++对象构造成一个XML文档然后把它写到磁盘或者另一个输出流。 TinyXML被设计得容易快速上手。它只有两个头文件和四个cpp文件。只需要把它们简单地加到你的项目就行了。有一个例子文件——xmltest.cpp来引导你该怎么做。 TinyXML以Zlib许可来发布,所以你可以在开源或者商业软件使用它。许可证更具体的描述在每个源代码文件的顶部可以找到。 TinyXML在保证正确和恰当的XML输出的基础上尝试成为一个灵活的解析器。TinyXML可以在任何合理的C++适用系统上编译。它不依赖于异常或者运行时类型信息,有没有STL支持都可以编译。TinyXML完全支持UTF-8编码和前64k个字符实体(译注:如果你不明白这句译文,可能你需要了解一下Unicode编码)。 它无法做些什么 TinyXML不解析不使用DTDs(文档类型定义)或者XSLs(可扩展样式表语言)。有其它解析器(到www.sourceforge.org搜索一下XML)具有更加全面的特性,但它们也就更大,需要花更长的时间来建立你的项目,有更陡的学习曲线,而且经常有一个更严格的许可协议。如果你是用于浏览器或者有更复杂的XML需要,那么TinyXML不适合你。 下面的DTD语法在TinyXML里是不做解析的: <!DOCTYPE Archiv [ ]> 因为TinyXML把它看成是一个带着非法嵌入!ELEMENT结点的!DOCTYPE结点。或许这在将来会得到支持。 指南 有耐性些,这是一份能很好地指导你怎么开始的指南,它(非常短小精悍)值得你花时间完整地读上一遍。 TinyXML指南 代码状况 TinyXML是成熟且经过测试的代码,非常健壮。如果你发现了漏洞,请提交漏洞报告到sourcefore网站上 (www.sourceforge.net/projects/tinyxml)。 我们会尽快修正。 有些地方可以让你得到提高,如果你对TinyXML的工作感兴趣的话可以上sourceforge查找一下。 相关项目 你也许会觉得TinyXML很有用!(简介由项目提供) TinyXPath (http://tinyxpath.sourceforge.net). TinyXPath是一个小巧的XPath语法译码器脚本,用C++写成。 TinyXML++ (http://code.google.com/p/ticpp/). TinyXML++是一个全新的TinyXML接口,使用了许多诸如模板,异常处理和更好的错误处理这些C++强项技术。 特性 使用STL TinyXML可以被编译成使用或不使用STL。如果使用STL,TinyXML会使用std::string类,而且完全支持std::istream,std::ostream,operator<>。许多API方法都有 ‘const char*’和’const std::string&’两个版本。 如果被编译成不使用STL,则任何STL都不会被包含。所有string类都由TinyXML它自己实现。所有API方法都只提供’const char*’传入参数。 使用运行时定义: TIXML_USE_STL 来编译成不同的版本。这可以作为参数传给编译器或者在“tinyxml.h”文件的第一行进行设置。 注意:如果在Linux上编译测试代码,设置环境变量TINYXML_USE_STL=YES/NO可以控制STL的编译。而在Windows上,项目文件提供了STL和非STL两种目标文件。在你的项目,在tinyxml.h的第一行添加"#define TIXML_USE_STL"应该是最简单的。 UTF-8 TinyXML支持UTF-8,所以可以处理任何语言的XML文件,而且TinyXML也支持“legacy模式”——一种在支持UTF-8之前使用的编码方式,可能最好的解释是“扩展的ascii”。 正常情况下,TinyXML会检测出正确的编码并使用它,然而,通过设置头文件的TIXML_DEFAULT_ENCODING值,TinyXML可以被强制成总是使用某一种编码。 除非以下情况发生,否则TinyXML会默认使用Legacy模式: 如果文件或者数据流以非标准但普遍的"UTF-8引导字节" (0xef 0xbb 0xbf)开始,TinyXML会以UTF-8的方式来读取它。 如果包含有encoding="UTF-8"的声明被读取,那么TinyXML会以UTF-8的方式来读取它。 如果读取到没有指定编码方式的声明,那么TinyXML会以UTF-8的方式来读取它。 如果包含有encoding=“其它编码”的声明被读取,那么TinyXML会以Legacy模式来读取它。在Legacy模式下,TinyXML会像以前那样工作,虽然已经不是很清楚这种模式是如何工作的了,但旧的内容还得保持能够运行。 除了上面提到的情况,TinyXML会默认运行在Legacy模式下。 如果编码设置错误或者检测到错误会发生什么事呢?TinyXML会尝试跳过这些看似不正确的编码,你可能会得到一些奇怪的结果或者乱码,你可以强制TinyXML使用正确的编码模式。 通过使用LoadFile( TIXML_ENCODING_LEGACY )或者LoadFile( filename, TIXML_ENCODING_LEGACY ), 你可以强制TinyXML使用Legacy模式。你也可以通过设置TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY来强制一直使用Legacy模式。同样的,你也可以通过相同的方法来强制设置成TIXML_ENCODING_UTF8。 对于使用英文XML的英语用户来说,UTF-8跟low-ASCII是一样的。你不需要知道UTF-8或者一点也不需要修改你的代码。你可以把UTF-8当作是ASCII的超集。 UTF-8并不是一种双字节格式,但它是一种标准的Unicode编码!TinyXML当前不使用或者直接支持wchar,TCHAR,或者微软的_UNICODE。"Unicode"这个术语被普遍地认为指的是UTF-16(一种unicode的宽字节编码)是不适当的,这是混淆的来源。 对于“high-ascii”语言来说——几乎所有非英语语言,只要XML被编码成UTF-8, TinyXML就能够处理。说起来可能有点微妙,比较旧的程序和操作系统趋向于使用“默认”或者“传统”的编码方式。许多应用程序(和几乎所有现在的应用程序)都能够输出UTF-8,但是那些比较旧或者难处理的(或者干脆不能使用的)系统还是只能以默认编码来输出文本。 比如说,日本的系统传统上使用SHIFT-JIS编码,这种情况下TinyXML就无法读取了。但是一个好的文本编辑器可以导入SHIFT-JIS的文本然后保存成UTF-8编码格式的。 Skew.org link上关于转换编码的话题做得很好。 测试文件“utf8test.xml”包含了英文、西班牙文、俄文和简体文(希望它们都能够被正确地转化)。“utf8test.gif”文件是从IE上截取的XML文件快照。请注意如果你的系统上没有正确的字体(简体文或者俄文),那么即使你正确地解析了也看不到与GIF文件上一样的输出。同时要注意在一个西方编码的控制台上(至少我的Windows机器是这样),Print()或者printf()也无法正确地显示这个文件,这不关TinyXML的事——这只是操作系统的问题。TinyXML没有丢掉或者损坏数据,只是控制台无法显示UTF-8而已。 实体 TinyXML认得预定义的特殊“字符实体”,即: & & < > " " &apos; ‘ 这些在XML文档读取时都会被辨认出来,并会被转化成等价的UTF-8字符。比如下面的XML文本: Far & Away 从TiXmlText 对象查询出来时会变成"Far & Away"这样的值,而写回XML流/文件时会以“&”的方式写回。老版本的TinyXML“保留”了字符实体,而在新版本它们会被转化成字符串。 另外,所有字符都可以用它的Unicode编码数字来指定, " "和" "都表示不可分的空格字符。 打印 TinyXML有几种不同的方式来打印输出,当然它们各有各的优缺点。 Print( FILE* ):输出到一个标准C流,包括所有的C文件和标准输出。 "相当漂亮的打印", 但你没法控制打印选项。 输出数据直接写到FILE对象,所以TinyXML代码没有内存负担。 被Print()和SaveFile()调用。 operator<<:输出到一个c++流。 与C++ iostreams集成在一起。 在"network printing"模式下输出没有换行符,这对于网络传输和C++对象之间的XML交换有好处,但人很难阅读。 TiXmlPrinter:输出到一个std::string或者内存缓冲区。 API还不是很简练。 将来会增加打印选项。 在将来的版本可能有些细微的变化,因为它会被改进和扩展。 流 设置了TIXML_USE_STL,TinyXML就能支持C++流(operator <>)和C(FILE*)流。但它们之间有些差异你需要知道: C风格输出: 基于FILE* 用Print()和SaveFile()方法 生成具有很多空格的格式化过的输出,这是为了尽可能让人看得明白。它们非常快,而且能够容忍XML文档的格式错误。例如一个XML文档包含两个根元素和两个声明仍然能被打印出来。 C风格输入: 基于FILE* 用Parse()和LoadFile()方法 速度快,容错性好。当你不需要C++流时就可以使用它。 C++风格输出: 基于std::ostream operator<> 从流读取XML使其可用于网络传输。通过些小技巧,它知道当XML文档读取完毕时,流后面的就一定是其它数据了。TinyXML总假定当它读取到根结点后XML数据就结束了。换句话说,那些具有不止一个根元素的文档是无法被正确读取的。另外还要注意由于STL的实现和TinyXML的限制,operator>>会比Parse慢一些。 空格 对是保留还是压缩空格这一问题人们还没达成共识。举个例子,假设‘_’代表一个空格,对于"Hello____world",HTML和某些XML解析器会解释成"Hello_world",它们压缩掉了一些空格。而有些XML解析器却不会这样,它们会保留空格,于是就是“Hello____world”(记住_表示一个空格)。其它的还建议__Hello___world__应该变成Hello___world 。 这是一个解决得不能让我满意的问题。TinyXML一开始就两种方式都支持。调用TiXmlBase::SetCondenseWhiteSpace( bool )来设置你想要的结果,默认是压缩掉多余的空格。 如果想要改变默认行为,你应该在解析任何XML数据之前调用TiXmlBase::SetCondenseWhiteSpace( bool ) ,而且我不建议设置之后再去改动它。 句柄 想要健壮地读取一个XML文档,检查方法调用后的返回值是否为null是很重要的。一种安全的检错实现可能会产生像这样的代码: TiXmlElement* root = document.FirstChildElement( "Document" ); if ( root ) { TiXmlElement* element = root->FirstChildElement( "Element" ); if ( element ) { TiXmlElement* child = element->FirstChildElement( "Child" ); if ( child ) { TiXmlElement* child2 = child->NextSiblingElement( "Child" ); if ( child2 ) { // Finally do something useful. 用句柄的话就不会这么冗长了,使用TiXmlHandle类,前面的代码就会变成这样: TiXmlHandle docHandle( &document ); TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); if ( child2 ) { // do something useful 这处理起来容易多了。 查阅TiXmlHandle可以得到更多的信息。 行列追踪 对于某些应用程序来说,能够追踪节点和属性在它们源文件的原始位置是很重要的。另外,知道解析错误在源文件的发生位置可以节省大量时间。 TinyXML能够追踪所有结点和属性在文本文件的行列原始位置。TiXmlBase::Row() 和 TiXmlBase::Column() 方法返回结点在源文件的原始位置。正确的制表符号可以经由TiXmlDocument::SetTabSize() 来配置。 使用与安装 编译与运行xmltest: 提供了一个Linux Makefile和一个Windows Visual C++ .dsw 文件。只需要简单地编译和运行,它就会在你的磁盘上生成demotest.xml文件并在屏幕上输出。它还尝试用不同的方法遍历DOM并打印出结点数。 那个Linux makefile很通用,可以运行在很多系统上——它目前已经在mingw和MacOSX上测试过。你不需要运行 ‘make depend’,因为那些依赖关系已经硬编码在文件里了。 用于VC6的Windows项目文件 tinyxml: tinyxml 库,非STL tinyxmlSTL: tinyxml 库,STL tinyXmlTest: 用于测试的应用程序,非STL tinyXmlTestSTL: 用于测试的应用程序,STL Makefile 在makefile的顶部你可以设置: PROFILE,DEBUG,和TINYXML_USE_STL。makefile里有具体描述。 在tinyxml目录输入“make clean”然后“make”,就可以生成可执行的“xmltest”文件。 在某一应用程序使用: 把tinyxml.cpp,tinyxml.h, tinyxmlerror.cpp, tinyxmlparser.cpp, tinystr.cpp, 和 tinystr.h 添加到你的项目和makefile。就这么简单,它可以在任何合理的C++适用系统上编译。不需要为TinyXML打开异常或者运行时类型信息支持。 TinyXML怎么工作 举个例子可能是最好的办法,理解一下: Go to the Toy store! Do bills 它称不上是一个To Do列表,但它已经足够了。像下面这样读取并解析这个文件(叫“demo.xml”)你就能创建一个文档: TiXmlDocument doc( "demo.xml" ); doc.LoadFile(); 现在它准备好了,让我们看看其的某些行和它们怎么与DOM联系起来。 第一行是一个声明,它会转化成TiXmlDeclaration 类,同时也是文档结点的第一个子结点。 这是TinyXML唯一能够解析的指令/特殊标签。一般来说指令标签会保存在TiXmlUnknown 以保证在它保存回磁盘时不会丢失这些命令。 这是一个注释,会成为一个TiXmlComment对象。 "ToDo"标签定义了一个TiXmlElement 对象。它没有任何属性,但包含另外的两个元素。 生成另一个TiXmlElement对象,它是“ToDo”元素的子结点。此元素有一个名为“priority”和值为“1”的属性。 Go to the TiXmlText ,这是一个叶子结点,它不能再包含其它结点,是"Item" TiXmlElement的子结点。 另一个TiXmlElement, 这也是“Item”元素的子结点。 等等 最后,看看整个对象树: TiXmlDocument "demo.xml" TiXmlDeclaration "version=’1.0′" "standalone=no" TiXmlComment " Our to do list data" TiXmlElement "ToDo" TiXmlElement "Item" Attribtutes: priority = 1 TiXmlText "Go to the " TiXmlElement "bold" TiXmlText "Toy store!" TiXmlElement "Item" Attributes: priority=2 TiXmlText "Do bills" 文档 本文档由Doxygen使用‘dox’配置文件生成。 许可证 TinyXML基于zlib许可证来发布: 本软件按“现状”提供(即现在你看到的样子),不做任何明确或隐晦的保证。由使用此软件所引起的任何损失都决不可能由作者承担。 只要遵循下面的限制,就允许任何人把这软件用于任何目的,包括商业软件,也允许修改它并自由地重新发布: 1. 决不能虚报软件的来源;你决不能声称是你是软件的第一作者。如果你在某个产品使用了这个软件,那么在产品文档加入一个致谢辞我们会很感激,但这并非必要。 2. 修改了源版本就应该清楚地标记出来,决不能虚报说这是原始软件。 3. 本通告不能从源发布版本移除或做修改。 参考书目 万维网联盟是定制XML的权威标准机构,它的网页上有大量的信息。 权威指南:http://www.w3.org/TR/2004/REC-xml-20040204/ 我还要推荐由OReilly出版由Robert Eckstein撰写的"XML Pocket Reference"……这本书囊括了入门所需要的一切。 捐助者,联系人,还有简史 非常感谢给我们建议,漏洞报告,意见和鼓励的所有人。它们很有用,并且使得这个项目变得有趣。特别感谢那些捐助者,是他们让这个网站页面生机勃勃。 有很多人发来漏洞报告和意见,与其在这里一一列出来不如我们试着把它们写到“changes.txt”文件加以赞扬。 TinyXML的原作者是Lee Thomason(文档还经常出现“我”这个词) 。在Yves Berquin,Andrew Ellerton,和tinyXml社区的帮助下,Lee查阅修改和发布新版本。
1.XML 1.1. 概念:XML(eXtensible Markup Language),是一种可扩展的标记语言 1.2. 作用: XML是跨平台和跨语言的 不同的语言都支持XML解析(将XML转换为对应语言的数据) 1. 数据交换格式(一般不用了,用json代替了) 2. 配置文件都使用XML格式,框架都是用xml和Properties作为配置文件。 1.3. 使用:(掌握) 语法: <?xml version="1.0" encoding="UTF-8"?> <!--注释快捷键:ctrl + shift + / --> <!-- 第一行,必须有。定义XML的版本和字符集 --> <!-- XML的注释 --> XML的语法格式: 第一行用了定义xml文件的,写版本号和字符集 1.注释不能放到第一行 1.必需有声明,声明必需在第一行。 2.文档声明的字符编码必需和文档本身的编码一致 2.标签不能交叉嵌套使用(标签名字随便定义) 1. 双标签 : <双标签></双标签>一般是有下一级的 2. 单标签 :<单标签/> 如果没有下一级,就可以用单标签 3.有开始有结束 4.不数字开头,只能以字母或下划线开头; 5.只能有一个根标签;表示不能再有其他平级标签 6.严格区分大小写 7.一个标签不能有两个相同属性(属性名随便定义) 属性直接写在头标签内,格式:属性名="属性值" 8.特殊符号需要转义 或者可以放到CDATA区 <![CDATA[这里写特殊符号]]> html特殊符号,转义符号 9.编码格式统一: 1.开发环境:项目环境、系统环境 2.当前文件内encoding字符集 10.不能以xml(或者XMLXml等)开头W3C保留日后使用; 例如:最好不要使用 <xml:xx></xml: xx>W3C保留以后在使用 11.名称字符之间不能有空格或者制表符; 例如<四川 省> 12.名称字符之间不能使用冒号;<xml:xx></xml: xx> 注意: 1.Xml空格和换行都表示数据,严格区分大小写 1.4 XML约束:(了解) 1. 概念:就是限制一个XML文件标签和属性等的使用,只能按照某种规则书写 便于其他程序员学习。 2. 作用: 1. 代码校验 2. 代码提示 3. 利于达成共识形成规范 3. 约束分类: 1. DTD约束:Document Type Definition文档类型定义 例如: <!ELEMENT contacts (linkman+)> <!ELEMENT linkman (name,email,address,group)> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT address (#PCDATA)> <!ELEMENT group (#PCDATA)> 2. schema约束:xml Schema Definition xsd文件 例如: <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://itsource.cn" elementFormDefault="qualified"> <xs:element name="contacts"> <xs:complexType> <xs:sequence maxOccurs='unbounded'> <xs:element name="linkman"> <xs:complexType> <xs:sequence> <xs:element name='name' type='xs:string' /> <xs:element name='email' type='xs:string' /> <xs:element name='address' type='xs:string' /> <xs:element name='group' type='xs:string' /> </xs:sequence> <xs:attribute name="id" type="xs:long" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 1.5. XML解析(最重要) DOM: 文档对象模型 将一个XML(html)文档 的每一个元素解析成java的一个一个的对象 D Document 文档(XML文档) : 磁盘上面的xml文件 O Object 对象(Java对象) : 把xml文件封装成Java对象 M Model 模型 解析过程用到的类: Document Node(节点) Element (元素) Attribute(属性) - Attr Text(文本) dom4j解析: 支持xpath解析,就可以可以直接输入一个路径查找: 由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便, 结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式   第一种形式     /a/b/c: 表示一层一层的,a下面 b下面的c   第二种形式      //b: 表示和这个名称相同,表示只要名称是b,都得到 第三种形式     /* : 所有元素 第四种形式     a[1]: 表示第一个a元素     a[last()]:表示最后一个a元素 第五种形式     //a[@id]: 表示只要a元素上面有id属性,都得到 第六种形式     //a[@id='b1'] 表示元素名称是a,在a上面有id属性,并且id的属性值是b1 使用dom4j支持xpath具体操作 默认的情况下,dom4j不支持xpath,如果想要在dom4j里面是有xpath, 第一步需要,引入支持xpath的jar包,如下: jaxen-1.1-beta-6.jar 在dom4j里面提供了两个方法,用来支持xpath     selectNodes("xpath表达式"),获取多个节点        selectSingleNode("xpath表达式"),获取一个节点 步骤: 1. 在项目下创建一个lib文件夹folder 2. 复制dom4j的jar包到lib文件夹 3. 选jar右键buildpath 4. 在测试类使用dom4j解析XML。(今天开始学习别人的api) dom4j使用到的方法: 1.创建SaxReader对象 SAXReader reader = new SAXReader(); 2.设置命名空间 reader.getDocumentFactory().setXPathNamespaceURIs(map); 3. SAXReader对象调用read方法,将当前XML文件,转换为Document对象 document = reader.read(file); 4. 获取根节点 root = document.getRootElement(); 5. 通过父签添加子标签(元素) Element element = root.addElement("标签名");//返回值就是要添加的元素对象 给子标签添加值 element.setText("标签值"); 6. 给当前标签添加属性:xxx ,值是:xxx Element attribute = linkman.addAttribute("属性名","值"); 通过属性对象attribute获取属性值 attribute.setText("值"); 通过属性对象attribute获取属性值 String 值 = attribute.getText(); 7. 获取当前元素标签名 String name = e.getName(); 获取当前元素标签值 String text = e.getText(); 8. 获取指定名字的子标签(元素) root.element(String name); 9. 获取所有子标签(元素) root.elements(); 10.在dom4j里面提供了两个方法,用来支持xpath      selectNodes("xpath表达式"),获取当前名字的多个节点 selectSingleNode("xpath表达式"),获取一个节点

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值