轻装上阵,安卓工程师之路---day04(JavaScript & XML & DTD)

00 Node接口的API(续)

createElement()    按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,参数是一个字符串。方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1。新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象。

innerHTML   浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。innerHTML 属性可以用来读,写某给定元素里的 HTML 内容。xml不支持(正是不支持xml所以才不是标准DOM)

appendChild()  为给定元素增加一个子节点:var newreference = element.appendChild(newChild)   给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点。方法的返回值是一个指向新增子节点的引用指针。该方法通常与 createElement() createTextNode() 配合使用新节点,可以被追加给文档中的任何一个元素。

createTextNode()  创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。var textNode = document.createTextNode(text);方法只有一个参数:新建文本节点所包含的文本字符串方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的 nodeType 属性等于 3。新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性

insertBefore()  把一个给定节点插入到一个给定元素节点的给定子节点的前面。var reference =  element.insertBefore(newNode,targetNode)。节点 newNode 将被插入到元素节点 element 中并出现在节点 targetNode 的前面。节点 targetNode 必须是 element 元素的一个子节点。该方法通常与 createElement() 和 createTextNode() 配合使用

removeChild()  从一个给定元素里删除一个子节点,var reference = element.removeChild(node);返回值是一个指向已被删除的子节点的引用指针。某个节点被removeChild()方法删除时,这个节点所包含的所有子节点将同时被删除。如果想删除某个节点,但不知道它的父节点是哪一个,parentNode 属性可以帮忙。

childNodes(api中是集合的属性)  返回一个数组,这个数组由给定元素节点的子节点构成:var nodeList = node.childNodes。文本节点和属性节点都不可能再包含任何子节点,所以它们的 childNodes 属性永远会返回一个空数组。如果想知道某个元素有没有子节点,可以用 hasChildNodes 方法。如果想知道某个元素有多少个子节点,可以用 childNodes 数组的 length 属性。childNodes 属性是一个只读属性。

firstChild  该属性返回一个给定元素节点的第一个子节点,返回这个节点对象的指针。var reference = node.firstChild。文本节点和属性节点都不可能包含任何子节点,所以它们的 firstChild 属性永远会返回 null。某个元素的 firstChild 属性等价于这个元素的 childNodes 节点集合中的第一个节点,即:var reference = node.childNodes[0]。firstChild 属性是一个只读属性。

lastChild  对应 firstChild 的一个属性。

nextSibling 获取对此对象的下一个兄弟对象的引用。

previousSibling 返回一个给定节点的上一个兄弟节点

parentNode  返回一个给定节点的父节点。parentNode 属性返回的节点永远是一个元素节点,因为只有元素节点才有可能包含子节点。document 节点的没有父节点。

01 XML简介

XML 指可扩展标记语言

XML 是一种标记语言,很类似 HTML

XML和HTML是标准通用标记语言(Standard Generalized Markup Language,SGML)的衍生语言

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义

使用约束的XML文档设计具有自我描述性。

XML 是 W3C 的推荐标准

02 XML在企业中应用

XML有如下应用:

1.存储数据,即在没有数据库的情况下,是一个很好的替代品;

如果在有数据库的情况下,还是用数据库

2.传输数据,即服务器以XML的形式向android发送数据

3.软件配置,即通用配置XML文件,通知应用程序如何处理业务

但今天学的是如何书写XML文件

03 XML文档的树形结构

如果一个XML书写的是语法正确的,它必须加载到内存后,

形成一个倒状的树结构

一个XML文件分为如下六部分内容:

文档声明

元素

属性

注释

CDATA区 、特殊字符

处理指令(processing instruction)

声明:XML文件 = XML文档

04 XML语法-文档声明

作用:在编写XML文档时,需要先使用文档声明,声明XML文档的类型。

就是xml文件的第一行代码,即

<?xml version="1.0" encoding="UTF-8"?>

version="1.0"表示让浏览器用xml1.0版本的解析器来解析

encodding="UTF-8"表示保存时用UTF-8编码,且解析器用UTF-8来解析

<?xml version="1.0" encoding="GB2312"  standalone="yes" ?>

standalone="yes"表示该xml是否只是一个单独的文件,没有其它文件引用或约束,yes表示独立,no表示引用其它的文件,现在都不用了。

这三个属性,重点掌握version和encoding

初学者要注意:

1.没有写引号:<?xml version=1.0 ?>

2.输入内容中有中文: <?xml version=“1.0” ?>  //中文空格

3.编码错误,记事本设置编码UTF-8,与encoding不相同。如果你使用记事本编辑XML,要确保保存文本的编码与encoding="UTF-8"相同。

05 XML语法-元素

XML中的元素,就是标签,标签通常用开始和结构组成,中间是标签体,如果没有标签体的话,该标签叫空标签,如果如下书写:<a></a>或<a/>

一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套 ,例如:

<a>welcome to <b>www.baidu.com</a></b>同样的需求,写出来,可能效果不一样,因为XML与HTML相同会把空白字符看作有效的字符对待

格式良好的XML文档必须有且仅有一个根标签,其它标签都是这个根标签的子孙标签。

对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。

第一段:

<网址>www.baidu.com</网址>

第二段:

<网址>

www.baidu.com

</网址>

由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。

命名规则:

一个XML元素可以包含字母、数字以及其它   一些可见字符,但要遵守下面的一些规范:

区分大小写,例如,大<P>和小<p>是两个不同的标记。

不能以数字或"_" (下划线)开头。

不能以xml(或XML、或Xml 等)开头。

不能包含空格。

名称中间不能包含冒号(:)

06 XML语法-属性

属性开始标签中,用单引或双引定界

一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:

<input type=“text”>

属性值一定要用双引号(")或单引号(‘)引起来

定义属性也要遵循与标签相同的命名规范

07 XML语法-注释

注释是给程序员看,XML的解析器会原样输出

注释不能嵌套

<!--大段注释

……

<!--局部注释-->

……

-->

XML第一句话是声明,声明前不能有注释

注意:

1_写100行java代码,有30%左右的注释

2_将我们学过的java,html,css,xml技术所有注释,统一书出来

java有三种:

1_单行注释://

2_多行注释:/* */

3_文档注释:/**   */

08 XML语法-CDATA区或段

ChacterDATA是给XML解析器看,XML的解析器会做调整后原样输出CDATA区中的内容,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出,但空白符会压缩处理。

语法:

<![CDATA[

select id,name,pass from students where age<22;

]]>

如果将age<22放在CDATA区之外,那么XML解析器会将<22看作是标签是一个组成部份,

会报错,但我的本意是小于号,解决方案有二个:

1_将将它放CDATA区中,那么XML解析器会原样解析其内容

09 XML语法-转义字符

和上面一样,是第2种解析方案,用转义符

select id,name,pass from students where age<22;

转义字符功能有限,它是有对常见的特殊符号转义

10 XML语法-处理指令

处理指令,简称PI (processing instruction)。处理指令用来指挥XML解析引擎如何解析XML文档内容。处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。

用CSS解析XML标签中的内容,如果你要用这个功能,标签就不

要用中文,通常处理指令在XML声明之下,根标签之前

建议:

1_开发工具不能放在中文或空格符的目录下

2_Tomcat这种WEB服务器的目录,最好放在某个盘的根目录下,例如:E:/,

不能含有中文

3_在开发工具中创建的工程名,尽量用英文,不要用中文和一些特殊符号,例如:&

例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。

11 DTD简介

DTD(Document Type Definition),全称为文档类型定义。

DTD文件应使用UTF-8或Unicode

如果没有约束文件的话,一个需求,可以写多种不同的XML文件,这就要写多个Java程序来解析。如果能有一个XML文件,那么我们只需要书写一个Java程序就行了,为了达到这个目的,我们需要为XML文件量身定做一个约束文件,让XML符合这些

约束文件的规则

12 会使用JavaScript验证XML和DTD文件

XML和DTD关系有三种方式:

1_使用内部DTD,即XML和DTD在同一个XML文件中

格式

<!DOCTYPE  文档根结点  […具体规范内容…]>

2_使用外部本地DTD

外部DTD:引用的文件在本地

格式:<!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">

3_使用外部公共DTD

公共DTD:

引用的文件是一个公共的文件

格式:

<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

13 XML关联内部DTD

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE bookstore [

<!ELEMENT  bookstore  (book)>

<!ELEMENT  book       (title,author,price)>

<!ELEMENT    title (#PCDATA)>

<!ELEMENT    author         (#PCDATA)>

<!ELEMENT   price      (#PCDATA)>

]>

14 XML关联外部DTD

XML符不符合语言,只需要将XML拖入浏览器运行即可,如果能原样输出

表示XML语言正确

<!DOCTYPE bookstore SYSTEM " 本地DTD文件的路径">

这样做XML和DTD可以分离

合法的XML:有语法正确的XML,如果浏览器正确显示xml的内容,就表示XML合法

有效的XML:不光XML语法正确,且符合DTD的约束规则,用JS去验让,即validateXmlAndDtd.html

合法的XML一定是有效的XML吗?错,因为合法不一定符合规则,别人读不懂。

有效的XML一定是合法的XML吗?对

实际:

1_初级软件工程员:只写XML,不写DTD

2_中级高级软件工程员:以写DTD为中心,兼写XML

15 XML关联公共DTD

如果一个软件全世界都统一使用,例如:android,hibernate等等,

且我们必须编写xml文件,那么就必定会有dtd这种约束文件存在,

这样的约束文件也是全世界统一的,我们叫其公共dtd

<!DOCTYPE

web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

16 DTD语法-元素

<!ELEMENT bookstore (book)>

表示bookstore元素下,只允许书写book元素

<!ELEMENT book (title,author,price)>

表示book元素下,必须依次书写title,author,price这三个子元素,顺序不能错

<!ELEMENT  price (#PCDATA)>

表示price元素中,只能书写可解析的文本字符串,不能再有其它子元素了

ANY表示元素中的内容不限,可以加上子元素,但加上的子元素必须被声明

EMPTY表示元素中不能书写内容

上述二个约束,不用加()

DTD一直定义到XML中的所有元素都定义完毕了才行

DTD中定义的<!ELEMENT顺序无关重要

XML中的标签顺序有关重要

17 DTD语法-属性

因为属性是定义在元素的上面

语法:

<!ATTLIST 元素名

属性名 属性类型 属性的约束情况

属性名 属性类型 属性的约束情况>

属性类型分四种:

ID:表示唯一的字符串,以字母开头

IDREF:表示这个唯一的值,要与另一个ID类型的属性值相同

(枚举值):表示取值只能是枚举中的任何一个

CDATA:表示属性值是字符串类型

属性的约束情况分四种:

#REQUIRED:表示该属性必写

#IMPLIED:表示该属性可写可不写

#FIXED "JavaEE":表示该属性可写可不写,如果写的话,一定要叫JavaEE,大小写敏感

"缺省值":表示该属性可写可不写,如果不写的话,就用默认值,如果写的话,就用实际值替代默认值

18 DTD语法-实体

实体是变量,用于引用普通文本或特殊字符的快捷方式的变量,就是用一个变量去替代一个特殊的字符串。

语法:

实体分为内部实体和外部实体

内部实体分为引用实体和参数实体

内部实体

引用实体在DTD中定义,在XML中使用

<!ENTITY 实体名 "一个字符串">

&实体名;

<!ENTITY copyright “I am a programmer">

……

©right;

参数实体在DTD中定义,在DTD中使用

<!ENTITY % 实体名 "一个字符串">

%实体名;

举例:

<!ENTITY  % TAG_NAMES   "姓名 | EMAIL | 电话 | 地址">

<!ELEMENT  个人信息     (%TAG_NAMES; | 生日)>

<!ELEMENT  客户信息     (%TAG_NAMES; | 公司名)>

外部实体:

<!ENTITY  实体名 SYSTEM “一个字符串文件名”>

Day04 重点代码

动态创建div节点,div节点包含文本节点与属性节点,把div节点连接到body节点上

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>

<body>

<script type="text/javascript">

//创建<div>节点,创建"哈哈"文本节点,添加到<body>节点中

//元素节点

var divElement = document.createElement("div");

//文本节点

var textElement = document.createTextNode("要相信自己");

//属性节点

divElement.setAttribute("id","2015");

//将文本节点添加到元素节点中

divElement.appendChild(textElement);

//将div元素节点添加到body元素节点后

document.body.appendChild(divElement);

</script>

</body>

</html>

删除Select标签下的指定option节点

<body>

<select id="city" size="6" style="width:100px">

<option>湖南</option>

<option>湖北</option>

<option>广东</option>

<option>广西</option>

<option>山东</option>

<option>山西</option>

</select>

<script type="text/javascript">

//双击删除选中的元素

//定位select节点

document.getElementById("city").ondblclick = function(){

//获取双击选中的option节点,this表示select节点

var optionElement = this[this.selectedIndex]

//直接父节点删除直接子节点

//this.removeChild(optionElement);

optionElement.parentNode.removeChild(optionElement);

}

</script>

</body>

演示window对象的showModalDialog方法,非模式方法自己换掉方法名就行了

模式:打开该窗体的父窗体不能操作,包括点击等

非模式:打开该窗体的父窗体能继续操作,报货打开多个这种窗体,与模式的表现相反。

本例子分开两个HTML页面显示,一个页面打开模式窗体,选择后,把模式窗体的内容显示到主窗体。

主窗体代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>

<body>

用户名:<input id="usernameID" type="text" readonly/>

<input id="buttonID" type="button" value="选择输入" />

<script type="text/javascript">

//单击"选择输入"按钮,弹出对话框以供选择输入

document.getElementById("buttonID").onclick = function(){

//以模式方式打开窗口,在窗口中显示16号页面的内容

var sURL = "16_showModalDialog2.html";

//将15号页面的window对象传给16号页面

var vArguments = window;

var sFeatures = "dialogHeight:150px;dialogWidth:70px";

window.showModalDialog(sURL,vArguments,sFeatures);//模式

}

</script>

</body>

</html>

模式窗体代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>

<body>

<table border="1" align="center">

<tr>

<th>

操作

</th>

<th>

用户名

</th>

</tr>

<tr><td><input type="button" value="选择输入" onclick="selectInput(this)" /></td><td>张三</td></tr>

<tr><td><input type="button" value="选择输入" onclick="selectInput(this)" /></td><td>李四</td></tr>

<tr><td><input type="button" value="选择输入" onclick="selectInput(this)" /></td><td>王五</td></tr>

</table>

<script type="text/javascript">

//单击"选择输入"按钮后,会将对应的值显示在父窗口文本框中

function selectInput(inputElement){

//获取用户名

var username = inputElement.parentNode.nextSibling.innerHTML;

//接收15号页面传过来的参数,这里的window是16号页面的window,但返回值是15号页面的window

var window15 = window.dialogArguments;

//将用户名设置到15号页面的姓名文本框中

window15.document.getElementById("usernameID").value = username;

}

</script>

</body>

</html>

XML部分代码:

演示CDATA用法:

<![CDATA[

……

]]>

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<!-- 以下是一本图书的信息 -->

<book id="it2015">

<title>JavaWeb基础</title>

</book>

<book>

<![CDATA[

<id>it2016</id>

<title>JavaWeb基础</title>

age < 22

]]>

<![CDATA[

select id,name,pass from students where age<22;

]]>

select id,name,pass from students where age<22;

</book>

</bookstore>

为XML加上样式进行显示,虽然不是XML主要功能,但也说明XML也可以进行样式处理

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/css" href="../css/itcast.css"?>

<root>

<span>张三</span>

<span>李四</span>

<span>王五</span>

</root>

样式文件代码:

span{

color:red;

font-size:111px

}

内部DTD:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE bookstore [

<!ELEMENT bookstore (book+)>

<!ELEMENT book (title,author,price,publish)>

<!ELEMENT title (#PCDATA)>

<!ELEMENT author (#PCDATA)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT publish ANY>

<!ELEMENT a     EMPTY>

]>

<bookstore>

<book>

<title>JavaWeb</title>

<author>哈哈</author>

<price>100</price>

<publish></publish>

</book>

<book>

<title>JavaWeb</title>

<author>哈哈</author>

<price>100</price>

<publish><a></a></publish>

</book>

</bookstore>

外部DTD:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE bookstore SYSTEM "../dtd/book.dtd">

<bookstore>

<book>

<title>JavaWeb</title>

<author>哈哈</author>

<price>100</price>

</book>

<book>

<title>JavaWeb</title>

<author>哈哈</author>

<publish>清华大学出版社</publish>

</book>

</bookstore>

DTD文件内容:

<!ELEMENT bookstore  (book+)>

<!ELEMENT book (title,author,(price|publish))>

<!ELEMENT   title (#PCDATA)>

<!ELEMENT   author (#PCDATA)>

<!ELEMENT   price (#PCDATA)>

<!ELEMENT   publish (#PCDATA)>

DTD属性的例子:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE bookstore [

<!ELEMENT  bookstore  (book)>

<!ELEMENT  book (title)>

<!ELEMENT   title (#PCDATA)>

<!ATTLIST book

id ID #REQUIRED

isbn  IDREF #IMPLIED

catelog CDATA #FIXED "JavaEE"

location (北京|上海|深圳|广州) "广州">

]>

<bookstore>

<book id="it2015" isbn="it2015" catelog="JavaEE">

<title>JavaWeb</title>

</book>

</bookstore>

时间: 2024-10-10 05:05:31

轻装上阵,安卓工程师之路---day04(JavaScript & XML & DTD)的相关文章

轻装上阵,安卓工程师之路---day03(JavaScript-DOM,BOM)

各个现有API的用处: CSS:查询样式,例如:边框,文本,等 DHTML:查BOM和DOM对象的属性,事件,方法,等,功能较强 JavaScript语言参考手册,查询JS的内置对象的属性和方法 W3CShool手册,学习手册,相当于课件 01 JS数据类型--复合类型 复合类型分为三个子类型 一)对象 就是一系列属性和方法的集合,只是一种类似数组的特殊结构.其属性方法可增加的. 对象为分为四类 1)内置对象,例如:Date,Math,Number,String... 2)自定义对象,例如:Pe

轻装上阵,安卓工程师之路---day02(CSS&amp;JavaScript)

01 CSS选择器 CSS的语法 格式:选择器{  属性:属性值;  } 举例:h2{color : red; } 常见选择器: 标签选择器     h2{  } 类选择器       .a {  }  <h2 class=“a”>  // 不能是数字,提倡 ID选择器      #a{  }  <h2 id=“a”>    // ID要唯一 组选择器       h1,h2{  } 父类选择器      p  a{  }   //p标签中的a标签 通用选择器      *{   

轻装上阵,安卓工程师之路---day01

01 C/S与B/S结构的区别 C/S[Client客户器/Server服务器] 图解:<<C&S结构.JPG>> 核心特点: 1——服务器运行数据负荷较轻,是由于客户端做了一些辅助的计算工作 2——数据的储存管理功能较为透明,由于部分数据存储在本机上完成,所以数据存储功能较为明显的显示出来 3——C/S架构的劣势是高昂的维护成本且投资大 例子:QQ,魔兽,红蜘蛛软件,... B/S[Browser浏览器/Server服务器] 这里说的浏览器,不光是指PC浏览器,也包含移动

轻装上阵,安卓工程师之路---day06(HTTP &amp; Servlet)

01 HTTP协议入门 HTTP协议是Web客户端和Web服务端通信的规则,用于定义客户端与web服务器通迅的格式,它是一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程. HTTP协议分类二个版本: 1_HTTP1.0版本 客户端请求服务器后,服务器响应信息后,立即断开,且只能请求和响应一个资源 缺点:客户端创建连接不容易,需要消耗大量的时间和资源,这时服务器就只响应一个资源就断开,下次客户端再请求,又要创建创建新的连接 2_HTTP1.1版本 客户端请求服务器后,服务器响应

轻装上阵,安卓工程师之路---day05(Dom4J &amp; Tomcat)

01 Java-DOM4J(DOM4J开源组织)-DOM解析XML文件 解析:是用Java等相关技术将XML文件中有用的信息提取 出来的过程叫解析. 解析分为二个大类别 1. DOM(Document Object Model)类别 一次性将硬盘中的XML文件加载的内存形成一个倒状的树结构,从根开始从上向下依次遍历,获取有用节点的内容 2. SAX(Simple Api for Xml)类别 分多次将硬盘中的XML文件加载的内存中,以事件的方式去解析节点中有用的内容 目前: 1. 空间不是问题,

测试之路3——对比XML文件2

距离上一篇对比xml文件隔了很久,并不代表一直做了那么久. 其实上一次对比xml文件一直出错,其实我忽略了一个很简单的问题:我从根目录下得到的所有孩子,是这个根下的,而xml文件的组织形式如下,孩子也有可能是其他的根: <streams> <stream id = "979" presetid = "-1"> <h264> <profile>High</profile> <par_y>-1<

安卓高手之路之 ClassLoader

我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西.靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力.希望这个高手之路系列能够记录我学习安卓的点点滴滴.从而汇成流,聚为江,成为海. 下面就结合代码分析一下ClassLoader这个东西. 安卓应用程序是一个Dalvik虚拟机,加载的是Dex格式的文件.加载Dex格式的文件从直观上理解就是ClassLoader做的事情.那么,我们就从应用程序的启动说起,因为应用程序的启动一定是与Class

测试之路2——对比XML文件1

才来几天,老大又给了我一个新的任务.不像以前的建100个任务工程那么坑爹,却还是顿时让我感觉压力山大. 因为在这之前,我改了他写的例程,用于生成新的任务项目,其实任务项目就是通过XML文件进行参数传递,底层早已经封装好了.但是问题出来了,你新建任务需要传过去一个XML文件,但是服务器端生成任务还会返回一个XML文件,而我对于服务器端并不了解,我只知道服务器生成了一个XML文件,但是它生成的XML中的参数是否和我传过去的参数相同? 所以老大要我写一个方法,去比对这两份XML文件.(自己传到服务器和

买《Java Web全栈工程师之路》专题视频课程送纸质图书

<Java从小白到大牛>上市一年来,取得了比较好的成绩. 为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院<Java Web全栈工程师之路>专题视频课程的学员送一本<Java从小白到大牛>纸质版图书.请于购买课程后10个工作日内申请赠书,过期视为放弃.注意:苹果支付购买,以及8折(含8折)一下活动购买不赠送图书.领取说明:加qq群:51CTO-关老师付费群 523714201 验证消息:用户名+订单号即可通过. 最好您在购买之前咨询客服人员,以免不符合赠