XML (可扩展标记语言)

XML (可扩展标记语言)

一、 标记语言

    标记语言,是一种将文本(txt)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。

    当今广泛使用的标记语言是超文本标记语言(HyperText Markup Language,)HTML 和 可扩展标记语言(Extensible Markup Language)XML。标记语言广泛应用于网页和网络应用程序。

1、超文本标记语言 HTML

(1)写法格式:linklink
(2)关注数据的展示与用户体验
(3)标记是预定义、不可扩展的(如 表示超链接)

2、可扩展的标记语言 XML

(1)写法格式:同 html 样式
(2)仅关注数据本身
(3)标记可扩展,可自定义

xml 和 Html 语言是由同一种父语言 SGML(Standard Generalized Markup Language,标准通用标记语言)发展出来的两种语言。

    xml 由 html 发展而来,与 html 格式相似,但是比html 严格。

    XML 描述的是结构、内容和语义,它不描述页面元素的格式化。HTML 侧重于如何表现信息,内容描述与显示整合为一体。

    XML 中的每个元素名都是成对出现的,结束标签前加一个/



二、XML 作用

    XML 可以用于描述数据、存储数据、传输(交换)数据。XML 现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便,用户可以定义自己需要的标记。

1、存储、交换数据

    XML 只用元素和属性来描述数据,而不提供数据的显示方法,这使得 XML 具有能够运
行于不同系统平台之间和转换成不同格式目标文件。 用 XML 在应用程序和公司之间作数据交换,几个应用程序可以共享和解析同一个 XML 文件,不必使用传统的字符串解析或拆解过程。

2、配置

许多应用都将配置数据存储在各种文件里,如 SSH、Android。使用 XML 配置文件的应用程序能够方便地处理所需数据,不用像其它应用那样要经过重新编译才能修改和维护应用系统。xml 比 数据库占用的资源少,操作方便,用来存储简单的信息,现在主要用在程序的配置文件上(比如 web.xml)。现在有越来越多的设备也支持 XML 了。

三、XML 示例

用 XML 存储已注册用户的数据方式

1、方式 1
"1.0" encoding="UTF-8"?>


张三</name>
28</age>
</person>

李四</name>
30</age>
</person>
</people>
2、方式 2
"1.0" encoding="UTF-8"?>

"白晶晶" age="28"></person>
"至尊宝" age="300"></person>
</people>
用 xml 存储连续剧
"1.0" encoding="UTF-8"?>
<!-- 第一行是XML声明 -->
<!-- 这是XML处理指令的例子:处理指令以,以?>结束 -->
<!-- 在,在本例中是xml> -->
<!-- 处理指令一定要顶格写,前面不能有任何空白 -->


"郑晓龙"</span>>芈月传<<span class="token operator">/</span>title>
<players>
<player>孙俪<<span class="token operator">/</span>player>
<player>刘涛<<span class="token operator">/</span>player>
<player>马苏<<span class="token operator">/</span>player>
<player>方中信<<span class="token operator">/</span>player>
<player>黄轩<<span class="token operator">/</span>player>
<player>高云翔<<span class="token operator">/</span>player>
<<span class="token operator">/</span>players>
<desc><<span class="token operator">!</span><span class="token namespace">[CDATA[战国时期,芈月是楚威王最宠爱的小公主,但<desc>在楚威王
死后生活一落千丈,母亲向氏被楚威后逐出宫,芈月和弟弟芈戎躲过了一次次灾难和危机。
芈月与楚公子黄歇青梅竹马,真心相爱,但被作为嫡公主芈姝的陪嫁媵侍远嫁秦国。芈姝当
上了秦国的王后,芈月不得已成为宠妃...]]</span>><<span class="token operator">/</span>desc>
<<span class="token operator">/</span>sitcom>
<sitcom>
<title director=<span class="token string">"郑晓龙"</span>>甄嬛传<<span class="token operator">/</span>title>
<players>
<player>孙俪<<span class="token operator">/</span>player>
<player>陈建斌<<span class="token operator">/</span>player>
<player>蔡少芬<<span class="token operator">/</span>player>
<player>蒋欣<<span class="token operator">/</span>player>
<player>李东学<<span class="token operator">/</span>player>
<<span class="token operator">/</span>players>
<<span class="token operator">/</span>sitcom>
<<span class="token operator">/</span>sitcoms>
</code></pre> 
  <p>    文档的后缀名是 xml,每个文档有且仅有一个根元素,所谓根元素就是包含了其他所有元素的元素。XML 目前只有一个版本,即 1.0.XML 是自描述数据,使用现有的国际标准。</p> 
  <p>    XML 中有格式良好(Well-formed)的 XML 和有效的(validate)XML。</p> 
  <br> 
  <br> 
  <h3><font color="blue">四、格式良好的 xml<br></font></h3> 
  <h5>1、语法规范:</h5> 
  <h6>1)、必须有 XML 文档声明:</h6> 
  <p><a href="http://img.e-com-net.com/image/info8/54a6084936ae4a9597ed389dcf60802b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/54a6084936ae4a9597ed389dcf60802b.jpg" alt="XML (可扩展标记语言)_第1张图片" width="650" height="105" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/4878b2a5cfa9492f96e913769b03f3c7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4878b2a5cfa9492f96e913769b03f3c7.jpg" alt="XML (可扩展标记语言)_第2张图片" width="650" height="224" style="border:1px solid black;"></a></p> 
  <p><strong>说明:</strong><br>     XML standalone 定义了外部定义的 DTD 文件的存在性. standalone element 有效值是 yes 和 no. 如下是一个例子:</p> 
  <pre><code class="prism language-powershell"><?xml version=<span class="token string">"1.0"</span> encoding=<span class="token string">"UTF-8"</span> standalone=<span class="token string">"no"</span>?>
<<span class="token operator">!</span>DOCTYPE s1 PUBLIC <span class="token string">"http://www.ibm.com/example.dtd"</span> <span class="token string">"example.dtd"</span>>
<s1><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><<span class="token operator">/</span>s1>
</code></pre> 
  <p>    值 no 表示这个 XML 文档不是独立的而是依赖于外部所定义的一个 DTD. 值 yes 表示这个 XML 文档是自包含的(self-contained).</p> 
  <p>    注意文本文件保存时候默认的编码格式是ANSI,需用记事本把它手动改为UTF-8保存。</p> 
  <h6>2)、必须有且仅有一个根元素</h6> 
  <h6>3)、严格区分大小写</h6> 
  <h6>4)、属性值用引号(双引号或单引号) :</h6> 
  <p>    等号分开的名称-值对;在一个元素上,相同的属性只能出现一次</p> 
  <h6>5)、标记成对;</h6> 
  <h6>6)、空标记关闭;</h6> 
  <h6>7)、元素正确嵌套。</h6> 
  <br> 
  <h5>2、元素命名规则</h5> 
  <h6>1)、名称中可以包含字母、数字或者其他可见字符;</h6> 
  <h6>2)、名称不能以数字开头;</h6> 
  <h6>3)、不能以 XML/xml/Xml…开头;</h6> 
  <h6>4)、名称中不能含空格;</h6> 
  <h6>5)、名称中不能含冒号(注:冒号留给命名空间使用)</h6> 
  <br> 
  <h5>3、实体</h5> 
  <p>    实体叫 ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。</p> 
  <h6>1)内置的 5 种实体</h6> 
  <table> 
   <thead> 
    <tr> 
     <th>实体</th> 
     <th>符号</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td><code><</code></td> 
     <td><</td> 
    </tr> 
    <tr> 
     <td><code>></code></td> 
     <td>></td> 
    </tr> 
    <tr> 
     <td><code>&</code></td> 
     <td>&</td> 
    </tr> 
    <tr> 
     <td><code>"</code></td> 
     <td>"</td> 
    </tr> 
    <tr> 
     <td><code>'</code></td> 
     <td>’</td> 
    </tr> 
   </tbody> 
  </table> 
  <h6>2)自定义实体</h6> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>DOCTYPE 根元素<span class="token punctuation">[</span>
<<span class="token operator">!</span>-<span class="token operator">-</span>实体声明<span class="token operator">--</span>>
<<span class="token operator">!</span>ENTITY 实体名 <span class="token string">"实体内容"</span>>
<span class="token punctuation">]</span>>
使用已定义的实体:&实体名<span class="token punctuation">;</span>
<?xml version=<span class="token string">"1.0"</span> encoding=<span class="token string">"UTF-8"</span>?>
<<span class="token operator">!</span>DOCTYPE sxt<span class="token punctuation">[</span>
<<span class="token operator">!</span>-<span class="token operator">-</span>实体声明<span class="token operator">--</span>>
<<span class="token operator">!</span>ENTITY xm <span class="token string">"明明"</span>>
<<span class="token operator">!</span>ENTITY gen <span class="token string">"保密"</span>>
<span class="token punctuation">]</span>>
<xxx>
<teacher>
 <name>明明<<span class="token operator">/</span>name>
 <gender>保密<<span class="token operator">/</span>gender>
 <<span class="token operator">/</span>teacher>
 <<span class="token operator">!</span>-<span class="token operator">-</span>引用实体的方法<span class="token operator">--</span>>
 <teacher>
 <name>&xm<span class="token punctuation">;</span><<span class="token operator">/</span>name>
 <gender>&gen<span class="token punctuation">;</span><<span class="token operator">/</span>gender>
 <<span class="token operator">/</span>teacher>
<<span class="token operator">/</span>xxx>
</code></pre> 
  <br> 
  <h5>4、文档类型声明</h5> 
  <p>    文档类型定义——DOCTYPE,文档类型声明,紧跟 XML 声明之后,包含所有实体声明</p> 
  <pre><code class="prism language-powershell"><?xml version=<span class="token string">"1.0"</span> encoding=<span class="token string">"utf-8"</span>?>
<<span class="token operator">!</span>DOCTYPE 根元素标记名<span class="token punctuation">[</span><<span class="token operator">!</span>-<span class="token operator">-</span>实体声明<span class="token operator">--</span>><span class="token punctuation">]</span>>
</code></pre> 
  <br> 
  <br> 
  <h3><font color="blue">五、组成</font></h3> 
  <h5>1、构成</h5> 
  <p>    所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:<br>     元素<br>     属性<br>     实体<br>     PCDATA<br>     CDATA<br>     CDATA 节(character data)</p> 
  <h5>2、CDATA</h5> 
  <p>    用于把整段文本解释为纯字符数据而不是标记的情况。如包含大量的<、>、&、或者"字符。CDATA 节中的所有字符都会被当做元素字符数据的常量部分,而不是 XML 标记,可以输入除]]>外任意字符,不能嵌套。</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span><span class="token namespace">[CDATA[ ...... ]]</span>>
</code></pre> 
  <h5>3、PCDATA</h5> 
  <p>    PCDATA 的意思是被解析的字符数据(parsed character data)。<br> 可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。文本中的标签会被当作标记来处理,而实体会被展开。不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 的内置实体来分别替换它们。<br> <br><br> <br></p> 
  <h3><font color="blue">六、XML 解析(重点)</font></h3> 
  <p>    基本的解析方式有两种:一种叫 SAX,另一种叫 DOM。SAX(Simple API for XML)是基于事件流的解析,DOM(Document Object Model)是基于 XML 文档树结构的解析。SAX:效率高,数据量小,仅一次获取 ,DOM:整颗树加载到内存中,耗内存,可多次获取。</p> 
  <h5>1、DOM 解析</h5> 
  <p>    与 js 中的类似,使用 JAXP(Java API for XML Parsing),即:用于 XML 解析的 Java API.</p> 
  <p>    DOM(Document Object Model, 文档对象模型),在应用程序中,基于 DOM 的 XML分析器将一个 XML 文档转换成一个对象模型的集合(通常称为 DOM 树),应用程序正是通过对这个对象模型的操作,来实现对 XML 文档数据的操作。</p> 
  <p>    XML 本身是以树状的形式出现的,所以 DOM 操作的时候,也将按章树的形式进行转换。在整个 DOM 树种,最大的地方指的是 Document,表示一个文档,在这个文档中存在一个根节点。</p> 
  <p>    注意:在使用 DOM 操作的时候,每一个文字的区域也是一个节点,称为文本节点。<br> 核心操作接口</p> 
  <h6>在 DOM 解析中有以下四个核心的操作接口</h6> 
  <h6>Document :</h6> 
  <p>    此接口代表了整个 XML 文档,表示的是整棵 DOM 树的根,提供了对文档中的数据进行访问和操作的入口,通过 Document 节点可以访问 XML 文件中所有的元素内容。</p> 
  <h6>Node :</h6> 
  <p>    此接口在整个 DOM 树种具有举足轻重的低位,DOM 操作的核心接口中有很大一部分接口是从 Node 接口继承过来的。例如:Document、Element 等接口,在 DOM树种,每一个 Node 接口代表了 DOM 树种的一个节点。</p> 
  <h6>NodeList :</h6> 
  <p>    此接口表示的是一个节点的集合,一般用于表示有顺序关系的一组节点,例如:一个节点的子节点,当文档改变的时候会直接影响到 NodeList 集合。</p> 
  <h6>NamedNodeMap :</h6> 
  <p>    此接口表示的是一组节点和其唯一名字对应的一一对应关系,本接口主要用于属性节点的表示上。</p> 
  <h6>DOM 解析过程</h6> 
  <p>如果一个程序需要进行 DOM 解析读取操作的话,也需要按照如下的步骤进行:</p> 
  <ul> 
   <li>① 建 立 DocumentBuilderFactory : DocumentBuilderFactory factory =<br> DocumentBuilderFactory.newInstance();</li> 
   <li>②建立 DocumentBuilder: DocumentBuilder builder = factory.newDocumentBuilder();</li> 
   <li>③建立 Document : Document doc = builder.parse(“要解析的文件路径”);</li> 
   <li>④建立 NodeList : NodeList nl = doc.getElementsByTagName(“读取节点”);</li> 
   <li>⑤进行 XML 信息读取<br> DOM 操作除了可以进行解析外,也可以进行文档的生成<br> 如果想要生成 XML 文件,则在创建文档的时候,就应该使用 newDocument()方法<br> 如果要将 DOM 的文档输出,本身是比较麻烦的 。一次编写多次 copy</li> 
  </ul> 
  <pre><code class="prism language-java"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">createXml</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception<span class="token punctuation">{</span>
<span class="token comment">//获取解析器工厂</span>
DocumentBuilderFactory factory<span class="token operator">=</span>DocumentBuilderFactory<span class="token punctuation">.</span><span class="token function">newInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//获取解析器</span>
DocumentBuilder builder<span class="token operator">=</span>factory<span class="token punctuation">.</span><span class="token function">newDocumentBuilder</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//创建文档</span>
Document doc<span class="token operator">=</span>builder<span class="token punctuation">.</span><span class="token function">newDocument</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//创建元素、设置关系</span>
Element root<span class="token operator">=</span>doc<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"people"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element person<span class="token operator">=</span>doc<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"person"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element name<span class="token operator">=</span>doc<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"name"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element age<span class="token operator">=</span>doc<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"age"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
name<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>doc<span class="token punctuation">.</span><span class="token function">createTextNode</span><span class="token punctuation">(</span><span class="token string">"shsxt"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
age<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>doc<span class="token punctuation">.</span><span class="token function">createTextNode</span><span class="token punctuation">(</span><span class="token string">"10"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
doc<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>root<span class="token punctuation">)</span><span class="token punctuation">;</span>
root<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>person<span class="token punctuation">)</span><span class="token punctuation">;</span>
person<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
person<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>age<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//写出去</span>
<span class="token comment">// 获得变压器工厂</span>
TransformerFactory tsf<span class="token operator">=</span>TransformerFactory<span class="token punctuation">.</span><span class="token function">newInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Transformer ts<span class="token operator">=</span>tsf<span class="token punctuation">.</span><span class="token function">newTransformer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//设置编码</span>
ts<span class="token punctuation">.</span><span class="token function">setOutputProperty</span><span class="token punctuation">(</span>OutputKeys<span class="token punctuation">.</span>ENCODING<span class="token punctuation">,</span> <span class="token string">"UTF-8"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//创建带有DOM节点的新输入源,充当转换Source树的持有者</span>
DOMSource source<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">DOMSource</span><span class="token punctuation">(</span>doc<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">//充当转换结果的持有者</span>
File file<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"src/output.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
StreamResult result<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">StreamResult</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">;</span>
ts<span class="token punctuation">.</span><span class="token function">transform</span><span class="token punctuation">(</span>source<span class="token punctuation">,</span> result<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> 
  <br> 
  <h5>2、SAX 解析</h5> 
  <p>    SAX(Simple API for XML)解析是按照 xml 文件的顺序一步一步的来解析。<br>     SAX 没有官方的标准机构,它不属于任何标准阻止或团体,也不属于任何公司或个人,而是提供任何人使用的一种计算机技术。<br>     SAX(Simple API for XML,操作 XML 的简单接口),与 DOM 操作不同的是,SAX 采用的是一种顺序的模式进行访问,是一种快速读取 XML 数据的方式。当使用 SAX 解析器进行操作的时候会触发一系列的事情,当扫描到文档(document)开始与结束、元素(element)开始与结束时都会调用相关的处理方法,并由这些操作方法作出相应的操作,直至整个文档扫描结束。<br>     如果要想实现这种 SAX 解析,则肯定首先建立一个 SAX 的解析器</p> 
  <pre><code class="prism language-java"><span class="token comment">// 1、创建解析器工厂</span>
SAXParserFactory factory <span class="token operator">=</span> SAXParserFactory<span class="token punctuation">.</span><span class="token function">newInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 2、获得解析器</span>
SAXParser parser <span class="token operator">=</span> factory<span class="token punctuation">.</span><span class="token function">newSAXParser</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// SAX解析器 ,继承 DefaultHandler</span>
String path <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"resource/demo01.xml"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getAbsolutePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 解析</span>
parser<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>path<span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">MySaxHandler</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> 
  <br> 
  <h5>3、DOM4j 解析</h5> 
  <p>    dom4j 是一个简单的开源库,用于处理 XML、 XPath 和 XSLT,它基于 Java 平台,使用 Java 的集合框架,全面集成了 DOM,SAX 和 JAXP。下载路径:<br> http://www.dom4j.org/dom4j-1.6.1/</p> 
  <p>http://sourceforge.net/projects/dom4j</p> 
  <p>可以使用 DOM4J 进行 XML 文件的读、写操作<br>     DOM4J 与 JDOM 一样都属于一个免费的 XML 开源组建,但是由于现在的开发框架中使用该技术较多,比如 Hibernate、Spring 等都使用 DOM4J 这个功能,所以作为介绍,大家可以对该组件有一个了解。并没有谁好谁坏,一般框架使用 DOM4J 较多,而我们平时如果要用则 JDOM 较常见。可以发现 DOM4J 发挥了很多新特性,比如输出格式就可以很好解析</p> 
  <pre><code class="prism language-powershell">File file = new File<span class="token punctuation">(</span><span class="token string">"resource/outputdom4j.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
SAXReader reader = new SAXReader<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 读取文件作为文档
Document doc = reader<span class="token punctuation">.</span>read<span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 获取文档的根元素
Element root = doc<span class="token punctuation">.</span>getRootElement<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 根据跟元素找到全部的子节点
Iterator<Element> iter = root<span class="token punctuation">.</span>elementIterator<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">while</span><span class="token punctuation">(</span>iter<span class="token punctuation">.</span>hasNext<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
Element name = iter<span class="token punctuation">.</span>next<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"value = "</span> <span class="token operator">+</span> name<span class="token punctuation">.</span>getText<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> 
  <h6>创建代码</h6> 
  <pre><code class="prism language-powershell">/<span class="token operator">/</span> 使用DocumentHelper来创建 Document对象
Document document = DocumentHelper<span class="token punctuation">.</span>createDocument<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 创建元素并设置关系
Element person = document<span class="token punctuation">.</span>addElement<span class="token punctuation">(</span><span class="token string">"person"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element name = person<span class="token punctuation">.</span>addElement<span class="token punctuation">(</span><span class="token string">"name"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element age = person<span class="token punctuation">.</span>addElement<span class="token punctuation">(</span><span class="token string">"age"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 设置文本
name<span class="token punctuation">.</span>setText<span class="token punctuation">(</span><span class="token string">"shsxt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
age<span class="token punctuation">.</span>setText<span class="token punctuation">(</span><span class="token string">"10"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 创建格式化输出器
OutputFormat of = OutputFormat<span class="token punctuation">.</span>createPrettyPrint<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
of<span class="token punctuation">.</span>setEncoding<span class="token punctuation">(</span><span class="token string">"utf-8"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 输出到文件
File file = new File<span class="token punctuation">(</span><span class="token string">"resource/outputdom4j.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
XMLWriter writer = new XMLWriter<span class="token punctuation">(</span>new FileOutputStream<span class="token punctuation">(</span>new
File<span class="token punctuation">(</span>file<span class="token punctuation">.</span>getAbsolutePath<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span>of<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">/</span><span class="token operator">/</span> 写出
writer<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">;</span>
writer<span class="token punctuation">.</span>flush<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
writer<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> 
  <h6>Dom4J解析XML文档 代码</h6> 
  <pre><code class="prism language-java"><span class="token comment">// 	1、得到要解析的文件对象</span>
<span class="token comment">// 	2、得到解析器</span>
<span class="token comment">//	3、通过解析器将文件对象转换成Document对象</span>
<span class="token comment">// 	4、得到当前文档对象的根节点</span>
<span class="token comment">// 	5、得到 根节点的所有子节点,返回迭代器</span>
<span class="token comment">// 	6、遍历,得到每一个子节点的名称和值</span>
 
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Dom4JReader</span> <span class="token punctuation">{</span>
	
	<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception <span class="token punctuation">{</span>
		
		<span class="token comment">// 1、得到要解析的文件对象</span>
		File file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"src/test.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 2、得到解析器</span>
		SAXReader reader <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SAXReader</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 3、通过解析器将文件对象转换成Document对象</span>
		Document document <span class="token operator">=</span> reader<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 4、得到当前文档对象的根节点</span>
		Element root <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getRootElement</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 5、得到 根节点的所有子节点,返回迭代器</span>
		Iterator<span class="token generics function"><span class="token punctuation"><</span>Element<span class="token punctuation">></span></span> iterator <span class="token operator">=</span> root<span class="token punctuation">.</span><span class="token function">elementIterator</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 6、遍历,得到每一个子节点的名称和值</span>
		<span class="token keyword">while</span><span class="token punctuation">(</span>iterator<span class="token punctuation">.</span><span class="token function">hasNext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
			Element el <span class="token operator">=</span> iterator<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
			System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
			System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>el<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token punctuation">}</span>
		
	<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> 
  <h6>Dom4JWriter 代码</h6> 
  <pre><code class="prism language-java"><span class="token comment">// 使用DocumentHelper来创建 Document对象</span>
<span class="token comment">// 创建元素并设置关系</span>
<span class="token comment">// 设置文本</span>
<span class="token comment">// 创建格式化输出器</span>
<span class="token comment">// 输出到文件</span>
<span class="token comment">// 写出</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Dom4JWriter</span> <span class="token punctuation">{</span>

	<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception <span class="token punctuation">{</span>
		
		<span class="token comment">// 使用DocumentHelper来创建 Document对象</span>
		Document document <span class="token operator">=</span> DocumentHelper<span class="token punctuation">.</span><span class="token function">createDocument</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 创建元素并设置关系</span>
		Element person <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">addElement</span><span class="token punctuation">(</span><span class="token string">"person"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		Element name <span class="token operator">=</span> person<span class="token punctuation">.</span><span class="token function">addElement</span><span class="token punctuation">(</span><span class="token string">"name"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		Element age <span class="token operator">=</span> person<span class="token punctuation">.</span><span class="token function">addElement</span><span class="token punctuation">(</span><span class="token string">"age"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 设置文本</span>
		name<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span><span class="token string">"shsxt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		age<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span><span class="token string">"10"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 创建格式化输出器</span>
		OutputFormat of <span class="token operator">=</span> OutputFormat<span class="token punctuation">.</span><span class="token function">createPrettyPrint</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		of<span class="token punctuation">.</span><span class="token function">setEncoding</span><span class="token punctuation">(</span><span class="token string">"utf-8"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 输出到文件</span>
		File file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"src/outputdom4j.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		XMLWriter writer <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLWriter</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">FileOutputStream</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>file<span class="token punctuation">.</span><span class="token function">getAbsolutePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span>of<span class="token punctuation">)</span><span class="token punctuation">;</span>
		<span class="token comment">// 写出</span>
		writer<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">;</span>
		writer<span class="token punctuation">.</span><span class="token function">flush</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		writer<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
		
	<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> 
  <br> 
  <h5>4、JDOM 解析</h5> 
  <p><strong>下载路径:</strong> http://www.jdom.org/downloads/index.html</p> 
  <p>    JDOM 是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。 JDOM 是一个开源项目,它基于树形结构,利用纯 Java 的技术对 XML 文档实现解析、生成、序列化及多种操作。</p> 
  <p><strong>JDOM 解析</strong><br>     掌握 JDOM 开发工具的使用及产生原理可以使用 JDOM 进行读取或写入的操作在 W3C 本身提供的 XML 操作标准,DOM 和 SAX,但是从开发角度上看,DOM 和 SAX本身是各有特点的,DOM 可以修改,但不适合读取大文件,而 SAX 可以读取大文件,但是本身不能修改所谓的 JDOM = DOM 的可修改 + SAX 的读取大文件<br>     DOM 本身是一个免费的开源组建,直接从 www.jdom.org 上下载,下载后解压,将 jdom.jar 包拷贝到 Tomcat 目录(项目)的 lib 中</p> 
  <h6>JDOM 主要操作的类:</h6> 
  <p><a href="http://img.e-com-net.com/image/info8/4f81e6ffb7af46e69fa7de1de22a2098.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4f81e6ffb7af46e69fa7de1de22a2098.jpg" alt="XML (可扩展标记语言)_第3张图片" width="650" height="330" style="border:1px solid black;"></a><br>     我们发现 JDOM 的输出操作要比传统的 DOM 方便得多,而且也更加直观,包括在输出的时候都很容易了。此时观察到的是 JDOM 对于 DOM 解析的支持,但是也说,JDOM 本身也支持了 SAX 的特点;所以,可以使用 SAX 进行解析操作。</p> 
  <h6>解析代码:</h6> 
  <pre><code class="prism language-java"><span class="token comment">// 获取SAX解析器</span>
SAXBuilder builder <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SAXBuilder</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
File file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"resource/demo01.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 获取文档</span>
Document doc <span class="token operator">=</span> builder<span class="token punctuation">.</span><span class="token function">build</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span>file<span class="token punctuation">.</span><span class="token function">getAbsolutePath</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 获取根节点</span>
Element root <span class="token operator">=</span> doc<span class="token punctuation">.</span><span class="token function">getRootElement</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>root<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 获取根节点下所有的子节点, 也可以根据标签名称获取指定的直接点</span>
List<span class="token generics function"><span class="token punctuation"><</span>Element<span class="token punctuation">></span></span> list <span class="token operator">=</span> root<span class="token punctuation">.</span><span class="token function">getChildren</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>list<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> x <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> x<span class="token operator"><</span>list<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> x<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
Element e <span class="token operator">=</span> list<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 获取元素的名称和里面的文本</span>
String name <span class="token operator">=</span> e<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>name <span class="token operator">+</span> <span class="token string">"="</span> <span class="token operator">+</span> e<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"=================="</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span>
</code></pre> 
  <h6>创建代码</h6> 
  <pre><code class="prism language-java"><span class="token comment">// 创建节点</span>
Element person <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Element</span><span class="token punctuation">(</span><span class="token string">"person"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element name <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Element</span><span class="token punctuation">(</span><span class="token string">"name"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Element age <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Element</span><span class="token punctuation">(</span><span class="token string">"age"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 创建属性</span>
Attribute id <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Attribute</span><span class="token punctuation">(</span><span class="token string">"id"</span><span class="token punctuation">,</span><span class="token string">"1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 设置文本</span>
name<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span><span class="token string">"shsxt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
age<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span><span class="token string">"10"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 设置关系</span>
Document doc <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Document</span><span class="token punctuation">(</span>person<span class="token punctuation">)</span><span class="token punctuation">;</span>
person<span class="token punctuation">.</span><span class="token function">addContent</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
name<span class="token punctuation">.</span><span class="token function">setAttribute</span><span class="token punctuation">(</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span>
person<span class="token punctuation">.</span><span class="token function">addContent</span><span class="token punctuation">(</span>age<span class="token punctuation">)</span><span class="token punctuation">;</span>
XMLOutputter out <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">XMLOutputter</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
File file <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">File</span><span class="token punctuation">(</span><span class="token string">"resource/outputjdom.xml"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
out<span class="token punctuation">.</span><span class="token function">output</span><span class="token punctuation">(</span>doc<span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">FileOutputStream</span><span class="token punctuation">(</span>file<span class="token punctuation">.</span><span class="token function">getAbsoluteFile</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> 
  <br> 
  <br> 
  <h3><font color="blue">七、XPATH</font></h3> 
  <h5>1、XPATH</h5> 
  <p>    XPath 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础。XPath非常类似对数据库操作的 SQL 语言,或者说 JQuery,它可以方便开发者抓起文档中需要的东西。(dom4j 也支持 xpath)</p> 
  <h5>2.节点类型</h5> 
  <p>    XPath 中有七种结点类型:元素、属性、文本、命名空间、处理指令、注释以及文档节点 (或称为根节点)。<br>     文档中存在元素节点,属性节点,根节点</p> 
  <h5>3.常用路径表达式</h5> 
  <table> 
   <thead> 
    <tr> 
     <th>表达式</th> 
     <th>描述</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td>节点名称(nodename)</td> 
     <td>选取此节点的所有子节点</td> 
    </tr> 
    <tr> 
     <td>/</td> 
     <td>从根节点选取</td> 
    </tr> 
    <tr> 
     <td>//</td> 
     <td>从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置</td> 
    </tr> 
    <tr> 
     <td>.</td> 
     <td>选取当前节点</td> 
    </tr> 
    <tr> 
     <td>…</td> 
     <td>选取当前节点的父节点</td> 
    </tr> 
    <tr> 
     <td>@</td> 
     <td>选取属性</td> 
    </tr> 
   </tbody> 
  </table> 
  <p><strong>示例如下:</strong><br> //@lang ---- 选取所有名为 lang 的属性</p> 
  <h5>4.限定语</h5> 
  <p>用来查找某个特定的节点或者包含某个指定的值的节点。以方括号括起</p> 
  <pre><code class="prism language-bash">//book<span class="token punctuation">[</span>price<span class="token operator">></span>35.00<span class="token punctuation">]</span> 选择所有 book 元素,且其中的 price 元素的值须大于 35.00
/bookstore/book<span class="token punctuation">[</span>1<span class="token punctuation">]</span> 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book<span class="token punctuation">[</span>last<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span> 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book<span class="token punctuation">[</span>last<span class="token punctuation">(</span><span class="token punctuation">)</span>-1<span class="token punctuation">]</span> 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book<span class="token punctuation">[</span>position<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator"><</span>3<span class="token punctuation">]</span> 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title<span class="token punctuation">[</span>@lang<span class="token punctuation">]</span> 选取所有拥有名为 lang 的属性的 title 元素。
//title<span class="token punctuation">[</span>@lang<span class="token operator">=</span><span class="token string">'eng'</span><span class="token punctuation">]</span> 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book<span class="token punctuation">[</span>price<span class="token operator">></span>35.00<span class="token punctuation">]</span> 选取所有 bookstore 元素的 book 元素,且其中的 price
元素的值须大于 35.00。
/bookstore/book<span class="token punctuation">[</span>price<span class="token operator">></span>35.00<span class="token punctuation">]</span>/title 选取所有 bookstore 元素中的 book 元素的 title 元
素,且其中的 price 元素的值须大于 35.00。
</code></pre> 
  <h5>5 .通配符</h5> 
  <table> 
   <thead> 
    <tr> 
     <th>通配符</th> 
     <th>描述</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td>*</td> 
     <td>匹配任何元素节点</td> 
    </tr> 
    <tr> 
     <td>@*</td> 
     <td>匹配任何属性节点</td> 
    </tr> 
    <tr> 
     <td>node()</td> 
     <td>匹配任何类型的节点</td> 
    </tr> 
    <tr> 
     <td><code>|</code></td> 
     <td>选取若干路径</td> 
    </tr> 
   </tbody> 
  </table> 
  <h6>使用示例</h6> 
  <table> 
   <thead> 
    <tr> 
     <th>路径表达式</th> 
     <th>结果</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td>/bookstore/*</td> 
     <td>选取 bookstore 元素的所有子节点</td> 
    </tr> 
    <tr> 
     <td>//*</td> 
     <td>选取文档中的所有元素</td> 
    </tr> 
    <tr> 
     <td>//title[@*]</td> 
     <td>选取所有带有属性的 title 元素。</td> 
    </tr> 
    <tr> 
     <td>//book/title</td> 
     <td>//book/price</td> 
    </tr> 
    <tr> 
     <td>//title //price</td> 
     <td>选取所有文档中的 title 和 price 元素。</td> 
    </tr> 
    <tr> 
     <td>/bookstore/book/title //price</td> 
     <td>选取所有属于 bookstore 元素的 book 元素的 title 元素,以及文档中所有的 price 元素</td> 
    </tr> 
   </tbody> 
  </table> 
  <br> 
  <br> 
  <h3><font color="blue">八、DTD</font></h3> 
  <p>    使用 DTD 可以对文档的内容进行约束,XML 中的 DTD 数据必须用<!DOCTYPE>标记说明,语法格式如下:</p> 
  <p><strong>XML 的元素内容定义格式如下:</strong></p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT 元素内容描述字符串>
</code></pre> 
  <p><strong>DTD 还可以描述子元素的结构,其使用语法:</strong></p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT 子元素结构名称 子元素结构表达式>
</code></pre> 
  <p><strong>其中子元素结构有以下几种常用的定义方式:</strong><br> 1.按顺序包括 B、C、D、的所有内容:</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT A<span class="token punctuation">(</span>B<span class="token punctuation">,</span>C<span class="token punctuation">,</span>D<span class="token punctuation">)</span>>
</code></pre> 
  <p>2.在 A 中要包含 B、C、D、的任意一个的内容:</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT A<span class="token punctuation">(</span>B<span class="token punctuation">|</span>C<span class="token punctuation">|</span>D<span class="token punctuation">)</span>>
</code></pre> 
  <p>3.在 A 中包含 0-1 个 B:</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT A<span class="token punctuation">(</span>B?<span class="token punctuation">)</span>>
</code></pre> 
  <p>4.在 A 中要包含 1 次以上各 B:</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT A<span class="token punctuation">(</span>B<span class="token operator">+</span><span class="token punctuation">)</span>>
</code></pre> 
  <p>5.在 A 中要包含 O 次以上各 B:</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT A<span class="token punctuation">(</span>B<span class="token operator">*</span><span class="token punctuation">)</span>>
</code></pre> 
  <p>6.空元素</p> 
  <pre><code class="prism language-powershell"><<span class="token operator">!</span>ELEMENT A EMPTY>
</code></pre> 
  <p><strong>代码示例:</strong></p> 
  <pre><code class="prism language-powershell"><?xml version=<span class="token string">"1.0"</span> encoding=<span class="token string">"UTF-8"</span>?>
<<span class="token operator">!</span>DOCTYPE persons<span class="token punctuation">[</span>
<<span class="token operator">!</span>ELEMENT persons <span class="token punctuation">(</span>person<span class="token operator">+</span><span class="token punctuation">)</span>>
<<span class="token operator">!</span>ELEMENT person <span class="token punctuation">(</span> name <span class="token punctuation">,</span> password? <span class="token punctuation">,</span> age<span class="token operator">+</span><span class="token punctuation">)</span> >
 <<span class="token operator">!</span>ATTLIST person sex <span class="token punctuation">(</span>男<span class="token punctuation">|</span>女<span class="token punctuation">)</span> <span class="token comment">#REQUIRED> </span>
 <<span class="token operator">!</span>ATTLIST person id ID <span class="token comment">#REQUIRED> </span>
 <<span class="token operator">!</span>ELEMENT name <span class="token punctuation">(</span><span class="token comment">#PCDATA)> </span>
 <<span class="token operator">!</span>ELEMENT password <span class="token punctuation">(</span><span class="token comment">#PCDATA)> </span>
 <<span class="token operator">!</span>ELEMENT age <span class="token punctuation">(</span><span class="token comment">#PCDATA)> </span>
<span class="token punctuation">]</span>> 
<persons>
 <person sex=<span class="token string">"男"</span> id=<span class="token string">"p1"</span>> 
 <name><<span class="token operator">/</span>name> 
 <password><<span class="token operator">/</span>password> 
 <age><<span class="token operator">/</span>age> 
 <<span class="token operator">/</span>person>
 <person sex=<span class="token string">"女"</span> id=<span class="token string">"p2"</span>> 
 <name><<span class="token operator">/</span>name> 
 <password><<span class="token operator">/</span>password> 
 <age><<span class="token operator">/</span>age> 
<<span class="token operator">/</span>person> 
<<span class="token operator">/</span>persons> 
</code></pre> 
  <br> 
  <br> 
  <h3><font color="blue">九、schema 简单编写</font></h3> 
  <p>    XML Schema 本身也是一种 XML 构造,它用来描述[哪个元素,在什么时候出现],[该元素具有什么样的属性]等等,也就是说,XML Schema 是对 XML 的树形构造加以描述说明的一种语言。原本,使用 DTD 对 XML 的树形构造加以描述说明,但 DTD 存在严重的局限性,DTD不能定义数据的类型,语法也与 XML 语言完全不一样,在使用的便利性,数据结构表达的严谨性上存在问题。使用 schema 对 xml 格式严格检查。</p> 
  <p><strong>简单的 XML Schema 例</strong><br> <strong>hello.xml</strong></p> 
  <pre><code class="prism language-powershell"><?xml version=<span class="token string">"1.0"</span> encoding=<span class="token string">"UTF-8"</span>?>
<hello xmlns:xsi=<span class="token string">"http://www.w3.org/2001/XMLSchema-instance"</span> 
xsi:noNamespaceSchemaLocation=<span class="token string">"file:///C:/Users/Administrator/Desktop/test.xsd"</span>>xmlschema简单入门 <<span class="token operator">/</span>hello>
</code></pre> 
  <p><strong>写一个简单的 XML Schema</strong></p> 
  <pre><code class="prism language-powershell"><?xml version=<span class="token string">"1.0"</span> encoding=<span class="token string">"UTF-8"</span>?>
<xs:schema xmlns:xs=<span class="token string">"http://www.w3.org/2001/XMLSchema"</span>>
<xs:element name=<span class="token string">"hello"</span> <span class="token function">type</span>=<span class="token string">"xs:string"</span><span class="token operator">/</span>> 
<<span class="token operator">/</span>xs:schema>
</code></pre> 
  <p><strong>解说:</strong></p> 
  <pre><code class="prism language-bash">第一行:
<span class="token operator"><</span>?xml version<span class="token operator">=</span><span class="token string">"1.0"</span> encoding<span class="token operator">=</span><span class="token string">"utf-8"</span>?<span class="token operator">></span>
XML 申明。XML Schema 本身也是 XML 文档,所以它遵循 XML 记述语法。使用 encoding属性指定文档的编码格式。
</code></pre> 
  <pre><code class="prism language-bash">根节点:
<span class="token operator"><</span>xs:schema xmlns:xs<span class="token operator">=</span><span class="token string">"http://www.w3.org/2001/XMLSchema"</span><span class="token operator">></span>
其中 xs 是命名空间,schema 是根节点名。
注意 xs:schema 与 xmlns:xs 中的 xs 要完全一样(名称可以任意,只要一样就可以),它标明以 xs:开头的节点元素是 http://www.w3.org/2001/XMLSchema 定义的元素。
</code></pre> 
  <pre><code class="prism language-bash">element 元素:
<span class="token operator"><</span>xs:element name<span class="token operator">=</span><span class="token string">"hello"</span> type<span class="token operator">=</span><span class="token string">"xs:string"</span><span class="token operator">></span>
上面已经说明,xs:element 表示 element 是 http://www.w3.org/2001/XMLSchema 中定义的元素。它的 name 属性用来定义它所描述的 XML 文档中的节点名。type 是表示该节点的值的类型。这里的 xs:string(string 类型)表示 hello 节点不能包含子节点,不能包含属性,它的内容值应该是 string 类型。除了 string 之外,XML Schema 还有很多其他类型。
</code></pre> 
  <pre><code class="prism language-bash">最后使用
<span class="token operator"><</span>/xs:schema<span class="token operator">></span>
完成整个 XML Schema 描述。
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1754382299232747520"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(web,前端_基础)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1829343167485407232.htm"
                           title="安全感" target="_blank">安全感</a>
                        <span class="text-muted">独有的偏爱与例外</span>

                        <div>我一直都觉得,给一个女孩子足够的安全感,这是你喜欢她的时候,最基础的,应该做的事情。这是你的本分,也是你的义务。很多女孩都很容易没有安全感,需要你的时候能找到你,是她们需要的安全感之一。虽然我也不知道安全感到底是个什么东西,但我觉得既然我爱她,就应该陪她,宠她,保护她。其实对于没有安全感的人来说,最擅长的就是逃避和假装。每当察觉到对方好像没那么在意自己了,就悄悄收回自己的心,假装我也不在意你了,我</div>
                    </li>
                    <li><a href="/article/1829337956297568256.htm"
                           title="C语言中的多线程编程:POSIX线程库(Pthreads)入门与实战(一)" target="_blank">C语言中的多线程编程:POSIX线程库(Pthreads)入门与实战(一)</a>
                        <span class="text-muted">JJJ69</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0C%E8%AF%AD%E8%A8%80%E5%90%A7/1.htm">学习C语言吧</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>目录一、引言背景介绍文章目的与读者定位二、夽线程基础概念线程与进程的关系并发与并行的区别多线程的优势与挑战三、POSIX线程库(Pthreads)简介POSIX标准与Pthreads规范Pthreads的兼容性与移植性总结一、引言背景介绍随着计算机硬件技术的飞速发展,多核处理器已经成为现代计算设备的标准配置。这种架构变革使得单个处理器芯片能够容纳多个执行核心,从而显著提升了并行计算能力。面对这样的</div>
                    </li>
                    <li><a href="/article/1829337578264948736.htm"
                           title="设置jupyter notebook 默认打开chrome 浏览器" target="_blank">设置jupyter notebook 默认打开chrome 浏览器</a>
                        <span class="text-muted">Cecilia__-__</span>
<a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a>
                        <div>1、打开cmd2、输入jupyternotebook--generate-config3、显示出jupyter_notebook_config.py文件所在目录。4、找到这个文件,用NotePad++打开。5、在最后输入:importwebbrowserwebbrowser.register(‘chrome’,None,webbrowser.GenericBrowser(u’C:\\Users\l</div>
                    </li>
                    <li><a href="/article/1829336191405748224.htm"
                           title="数学基础 -- 线性代数之行阶梯形" target="_blank">数学基础 -- 线性代数之行阶梯形</a>
                        <span class="text-muted">sz66cm</span>
<a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/1.htm">线性代数</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>行阶梯形行阶梯形(RowEchelonForm,REF)是线性代数中用于简化矩阵形式的一种方法,常用于求解线性方程组。矩阵经过行变换(如高斯消元法)后可以转换为行阶梯形,它具有以下特点:行阶梯形的定义零行在矩阵的底部:矩阵中如果存在一行全为零的行,这些行必须在矩阵的最下方。每一非零行的首个非零元素为1:这一元素称为该行的主元(leadingentry)。主元是从左到右的第一个非零元素,并且主元必须</div>
                    </li>
                    <li><a href="/article/1829336065060728832.htm"
                           title="12306项目学习笔记(框架篇Base)" target="_blank">12306项目学习笔记(框架篇Base)</a>
                        <span class="text-muted">Rainyocode</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>首先学习的是基础框架ApplicationContextHolderApplicationContextHolder提供了一种静态方式来访问Spring容器中的Bean,适用于某些特定场景,如工具类和框架集成。在12306项目中由于我们引入了RocketMQ消息队列,这些库的对象通常不是Spring管理的,无法直接使用@Autowired注入,所以需要ApplicationContextHolde</div>
                    </li>
                    <li><a href="/article/1829334552817004544.htm"
                           title="线性代数基础" target="_blank">线性代数基础</a>
                        <span class="text-muted">猿饵块</span>
<a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/1.htm">线性代数</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>向量的点积点乘和叉乘矩阵乘法规则:1,两个矩阵相乘时,第一个矩阵的列数必须等于第二个矩阵的行数矩阵乘法是点乘还是叉乘矩阵点乘:是矩阵各个对应元素相乘,这个时候要求两个矩阵必须同样大小。矩阵叉乘:矩阵的乘法就是矩阵a的第m行乘以矩阵b的第n列,各个元素对应相乘然后求和作为第m行n列元素的值所以矩阵乘法是叉乘。矩阵满足结合律,不满足交换律。满足交换律的是逆矩阵。旋转矩阵平移矩阵</div>
                    </li>
                    <li><a href="/article/1829334299795615744.htm"
                           title="Spring Boot 和 React 文件上传与下载教程" target="_blank">Spring Boot 和 React 文件上传与下载教程</a>
                        <span class="text-muted">DZSpace</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/1.htm">软件开发</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>在本教程中,你将学习如何使用SpringBoot构建文件上传和下载的后端功能,以及使用React实现前端界面。示例中还包括文件预览的功能。目录设置SpringBoot后端创建React前端整合与测试设置SpringBoot后端我们首先创建一个简单的SpringBoot应用程序来处理文件上传和下载。创建SpringBoot项目使用你喜欢的方法(SpringInitializr、IDE等)创建一个新的</div>
                    </li>
                    <li><a href="/article/1829333543772319744.htm"
                           title="Ansible运维" target="_blank">Ansible运维</a>
                        <span class="text-muted">条纹布鲁斯</span>
<a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>配置主机主机名IP地址角色Control10.0.17.200控制节点(manager)Node110.0.17.201控制节点(test)Node210.0.17.202控制节点(proxy)Node310.0.17.203控制节点(web1)Node410.0.17.204控制节点(web2)Node510.0.17.205控制节点(database)ubuntu最小化安装源:https://</div>
                    </li>
                    <li><a href="/article/1829331729576456192.htm"
                           title="喜欢很重要" target="_blank">喜欢很重要</a>
                        <span class="text-muted">见山止</span>

                        <div>有一个暑假,我负责在家带孩子,每天给小朋友做好吃的。就是从那个时候开始,我逐渐喜欢上了做菜,每次看到孩子香甜地吃着自己炒的菜,我就特别有成就感。我做菜没有什么基础,完全是照着菜谱尝试,中间再加上一点自己的理解。不过,效果还好,在这方面竟然有一点天分,一碰就能上手,而且表现还不错。每次炒四五个菜,总有一两个人品爆发,特别好吃,我自己也很满意。时间一点点过去,转眼两年了,这中间虽然做菜的机会少,但加起</div>
                    </li>
                    <li><a href="/article/1829325354028855296.htm"
                           title="企业级负载均衡LVS集群———KeepAlived高可用性集群、LVS(IPVS)+KeepAlived+Httpd、LVS(IPVS)+KeepAlived+Vsftpd" target="_blank">企业级负载均衡LVS集群———KeepAlived高可用性集群、LVS(IPVS)+KeepAlived+Httpd、LVS(IPVS)+KeepAlived+Vsftpd</a>
                        <span class="text-muted">草莓啾啾啾</span>
<a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A/1.htm">企业</a><a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a>
                        <div>文章目录一、KeepAlived1、KeepAlived的定义2、KeepAlived的工作原理3、Keepalived高可用故障切换转移原理4、Keepalived运行机制5、面试中Keepalived的工作原理的文字表述二、LVS+KeepAlived+Httpd三、LVS+KeepAlived+Vsftpd一、KeepAlived背景:我们之前都是一个调度器来调度多台web后端服务器,但是调</div>
                    </li>
                    <li><a href="/article/1829320688977145856.htm"
                           title="Datawhale X 李宏毅苹果书AI夏令营深度学习详解进阶Task02" target="_blank">Datawhale X 李宏毅苹果书AI夏令营深度学习详解进阶Task02</a>
                        <span class="text-muted">z are</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>目录一、自适应学习率二、学习率调度三、优化总结四、分类五、问题与解答本文了解到梯度下降是深度学习中最为基础的优化算法,其核心思想是沿着损失函数的梯度方向更新模型参数,以最小化损失值。公式如下:θt+1←θt-η*∇θL(θt)其中,θ表示模型参数,η表示学习率,L表示损失函数,∇θL表示损失函数关于参数的梯度。然而,梯度下降在复杂误差表面上存在局限性。例如,在鞍点或局部最小值处,梯度接近零,导致模</div>
                    </li>
                    <li><a href="/article/1829319133871828992.htm"
                           title="“飞毛腿”小汽车" target="_blank">“飞毛腿”小汽车</a>
                        <span class="text-muted">1e739302728d</span>

                        <div>我家新买的小汽车穿着,“绿色的衣服”,肚子鼓鼓的,车头和车尾扁扁的,车头前端还瞪着一双“大眼睛”——车灯。虽然它貌不惊人,但跑起来可快了。你瞧,随着“滴滴”两声,它的尾部冒出一股黑烟,紧接着,四个轮子飞快地转动起来,一转眼就跑出去了老远。</div>
                    </li>
                    <li><a href="/article/1829312529071960064.htm"
                           title="SpringBoot+Vue疫苗接种管理系统 预约接种疫苗管理系统 疫苗接种查询系统Java" target="_blank">SpringBoot+Vue疫苗接种管理系统 预约接种疫苗管理系统 疫苗接种查询系统Java</a>
                        <span class="text-muted">计算机程序老哥</span>

                        <div>作者主页:计算机毕业设计老哥有问题可以主页问我一、开发介绍1.1开发环境开发语言:Java数据库:MySQL系统架构:B/S后端:SpringBoot(Spring+SpringMVC+Mybatis)前端:Vue工具:IDEA或者Eclipse,JDK1.8,Maven二、系统介绍2.1图片展示注册登录页面:登陆.png前端页面功能:首页、疫苗信息、健康科普、疫苗资讯、个人中心、后台管理、咨询服</div>
                    </li>
                    <li><a href="/article/1829311358492045312.htm"
                           title="【MRI基础】视场FOV基本概念" target="_blank">【MRI基础】视场FOV基本概念</a>
                        <span class="text-muted">医学信号图像玩家</span>
<a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86%E5%9F%BA%E7%A1%80%E5%92%8C%E9%A1%B9%E7%9B%AE%E6%B1%87%E6%80%BB/1.htm">图像处理基础和项目汇总</a><a class="tag" taget="_blank" href="/search/MRI%E6%88%90%E5%83%8F/1.htm">MRI成像</a><a class="tag" taget="_blank" href="/search/MRI%E6%88%90%E5%83%8F%E5%9F%BA%E7%A1%80/1.htm">MRI成像基础</a>
                        <div>FOV基本概念在MRI(磁共振成像)中,视场(FOV)是指扫描过程中成像的身体区域。它是图像中捕捉到的患者解剖结构区域。FOV通常以厘米(cm)或毫米(mm)为单位表示,可在扫描前由操作员调整。较大的FOV将捕捉较大的身体区域,而较小的FOV将捕捉较小的区域,且空间分辨率较高。FOV由成像矩阵的大小和MRI扫描仪梯度线圈的物理尺寸决定。矩阵大小指的是图像中的像素数。FOV和矩阵尺寸之间的关系可以用</div>
                    </li>
                    <li><a href="/article/1829310224666816512.htm"
                           title="web.xml里面的配置加载顺序" target="_blank">web.xml里面的配置加载顺序</a>
                        <span class="text-muted">生产队队长</span>
<a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/All/1.htm">All</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a>
                        <div>https://blog.csdn.net/qq_22075041/article/details/78692780这篇文章写的很详细</div>
                    </li>
                    <li><a href="/article/1829308461104590848.htm"
                           title="Flask+LayUI开发手记(五):树型表格实现数据展示与编辑" target="_blank">Flask+LayUI开发手记(五):树型表格实现数据展示与编辑</a>
                        <span class="text-muted">hbrown</span>
<a class="tag" taget="_blank" href="/search/layui/1.htm">layui</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>说起来,树型表格treeTable绝对是后端程序员的巨大福利。要知道,在系统编程中,有父子节点关系的数据真是太多了,随便想一下就可以举出很多例子,比如权限、栏目、机构、产品、科目、货币、行业诸般等等,其实只要是稍微复杂一点的参数数据都会以树型方式来进行组织。以前做这种要专门找个树型组件来做,很麻烦的。Layui提供的树型表格TreeTable,实际是对表格的一个扩展类,把树和表格合在一起,前端配置</div>
                    </li>
                    <li><a href="/article/1829308069289488384.htm"
                           title="数据库基本概述" target="_blank">数据库基本概述</a>
                        <span class="text-muted">Cyzhouke</span>

                        <div>一、数据库基础知识1、数据库相关的基本概念1.1、数据描述事物的符号记录称为数据,对数据含义的说明称为数据的语义。1.2、数据库数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。1.3、数据库管理系统数据库管理系统(DBMS)是位于操作系统与用户之间的一层数据管理软件,是数据库系统的核心。DBMS按照一定的数据模型科学地组织和存储数据,能够高效地获取数据,提供安全性和完整性等统一控制机制</div>
                    </li>
                    <li><a href="/article/1829304051083341824.htm"
                           title="Django的Form和ModeForm的作用" target="_blank">Django的Form和ModeForm的作用</a>
                        <span class="text-muted">ac-er8888</span>
<a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a>
                        <div>Django的Form和ModelForm是Django框架中用于处理表单数据的两个重要组件,它们简化了表单数据的验证、渲染和处理过程。尽管它们都用于处理表单,但它们之间有一些关键的区别和用途。DjangoFormForm是Django中用于处理任何类型数据的表单的基础。它不直接与数据库模型相关联,而是允许你定义表单字段、验证规则和清理数据的方法。这使得Form非常灵活,可以用于处理非模型数据,如</div>
                    </li>
                    <li><a href="/article/1829302664408690688.htm"
                           title="Yololov5+Pyqt5+Opencv 实时城市积水报警系统" target="_blank">Yololov5+Pyqt5+Opencv 实时城市积水报警系统</a>
                        <span class="text-muted">机器懒得学习</span>
<a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a>
                        <div>在现代城市生活中,积水问题不仅影响交通和人们的日常生活,还可能对城市基础设施造成潜在的威胁。为了快速、准确地识别和应对积水问题,使用计算机视觉技术进行智能积水检测成为一个重要的解决方案。在这篇博客中,我将带你一步步实现一个基于YOLOv5的积水检测系统,帮助你轻松应对城市积水挑战。完整代码:PyQt5+YoloV5实现积水检测系统目录积水检测的挑战使用YOLOv5的解决方案代码实现:从加载模型到检</div>
                    </li>
                    <li><a href="/article/1829298883809865728.htm"
                           title="论文浅尝 - AAAI2020 | 迈向建立多语言义元知识库:用于 BabelNet Synsets 义元预测..." target="_blank">论文浅尝 - AAAI2020 | 迈向建立多语言义元知识库:用于 BabelNet Synsets 义元预测...</a>
                        <span class="text-muted">开放知识图谱</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>论文笔记整理:潘锐,天津大学硕士。来源:AAAI2020链接:https://arxiv.org/pdf/1912.01795.pdf摘要义原被定义为人类语言的最小语义单位。义原知识库(KBs)是一种包含义原标注词汇的知识库,它已成功地应用于许多自然语言处理任务中。然而,现有的义原知识库建立在少数几种语言上,阻碍了它们的广泛应用。为此论文提出在多语种百科全书词典BabelNet的基础上建立一个统一</div>
                    </li>
                    <li><a href="/article/1829298398784745472.htm"
                           title="找哪个购物省钱软件好?推荐佣金最高的高省APP!" target="_blank">找哪个购物省钱软件好?推荐佣金最高的高省APP!</a>
                        <span class="text-muted">浮沉导师</span>

                        <div>现如今,购物省钱已经成为了大多数消费者的共同追求。而购物省钱软件则是帮助我们实现这一目标的有效工具。本文将为您推荐一款佣金最高的省钱购物软件,并详细介绍高省APP,让您既省钱又能享受购物的乐趣。1.佣金最高的省钱购物软件推荐:在众多购物省钱软件中,高省APP是一款备受推崇的选择。该应用以用户购物返利为基础,为用户提供丰富的促销活动和最高佣金。大家好!我是高省APP最大团队&联合创始人浮沉导师!【高</div>
                    </li>
                    <li><a href="/article/1829296620349517824.htm"
                           title="2018-10-30" target="_blank">2018-10-30</a>
                        <span class="text-muted">鲜味居</span>

                        <div>鲜味居手打鲜汁肉包传统加创新就是招人稀罕鲜味居手打鲜汁肉包作为一个天津新派包子的代表,当然不是靠传统的味道来吸引消费者的,鲜味居这款包子在味道和制作手法上都讲究创新,谁说包子只有传统的才能卖的好了,只要味道好,怎么招都会招人稀罕的。鲜味居包子就是在传统包子的基础上,加上了自家的独特制陷方法,使味道和其它包子相比更胜一筹如果你要来天津旅游的话,我劝你一定要尝一下新在天进出现的这款鲜味居手打鲜汁肉包,</div>
                    </li>
                    <li><a href="/article/1829294223011180544.htm"
                           title="搜索引擎原理详解" target="_blank">搜索引擎原理详解</a>
                        <span class="text-muted">风不归Alkaid</span>
<a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a>
                        <div>搜索引擎是一种复杂的软件系统,旨在帮助用户找到互联网上的信息。它们通过索引大量网页并快速响应用户查询来工作。搜索引擎的核心功能包括爬虫(crawling)、索引(indexing)、查询处理(queryprocessing)和排名(ranking)。一、网络爬虫(WebCrawling)网络爬虫(WebCrawling)是搜索引擎的核心组件之一,它的主要任务是发现和获取互联网上的网页内容,以便后续</div>
                    </li>
                    <li><a href="/article/1829293718683873280.htm"
                           title="独立开发者系列(45)——PHP的时间处理详解" target="_blank">独立开发者系列(45)——PHP的时间处理详解</a>
                        <span class="text-muted">大梁来了</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AC%E5%9E%8B%E7%8B%AC%E7%AB%8B%E5%BC%80%E5%8F%91%E8%80%85/1.htm">转型独立开发者</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>编程里面,时间函数使用相对比较复杂。变化种类比较多,使用场景也比较丰富。(1)基础用法在PHP中,时间戳是一个整数,表示自Unix纪元(1970年1月1日00:00:00GMT)以来的秒数。使用time()获取当前时间戳如果需要对时间戳进行格式化使用date(“Y-m-dH:i:s”)获取当前的时间,按照我们正常的格式输出的时间格式。如果需要将我们看到的时间2020-10-12020-11-151</div>
                    </li>
                    <li><a href="/article/1829291956325412864.htm"
                           title="Spring Security与Apache Shiro:Java安全框架的比较" target="_blank">Spring Security与Apache Shiro:Java安全框架的比较</a>
                        <span class="text-muted">Lill_bin</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>引言在Java企业级应用开发中,安全性是一个不可忽视的重要方面。随着Web应用的复杂性日益增加,选择合适的安全框架对于保护应用免受未授权访问和其他安全威胁至关重要。SpringSecurity和ApacheShiro是两个广泛使用的Java安全框架,它们提供了认证(Authentication)和授权(Authorization)的功能。本文将对这两个框架进行比较,探讨它们的设计理念、核心特性以及</div>
                    </li>
                    <li><a href="/article/1829288238448209920.htm"
                           title="2021-10-23" target="_blank">2021-10-23</a>
                        <span class="text-muted">成长_3a8a</span>

                        <div>2021年10月23日中原焦点团队刘永利分享778天。今天继续阅读《尊重与希望》之三,合作理解的基础——焦点解决,短期治疗的咨询关系。Sfbt咨询师对当事人怀有真诚、好奇的心,接受当事人的各种知觉,并展现出一种愿意倾听的姿态。sfbt咨询师的好奇心是以知觉为焦点,并朝着建构解决之道的方向前进。咨询关系是创造改变的重要因素之一。sfbt视咨访关系为“可以把药吞下去(改变过程中)的一匙糖”这样的元素之</div>
                    </li>
                    <li><a href="/article/1829286279691464704.htm"
                           title="C语言学习记录(三)" target="_blank">C语言学习记录(三)</a>
                        <span class="text-muted">Tian Sifan</span>
<a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>我们紧接上篇的内容,上节我们提到了数据类型以及一些运算符,这节我决定给大家分享一下顺序结构,让大家更加深入理解、以及能达到自己运用运算符完成一些与顺序结构相关的简单的题目。一.顺序结构顺序结构是三大基础结构中最简单也是最容易的,其实现方式为从上至下依次进行,不需要进行任何判断,它是由一系列按特定顺序执行的操作组成,每个操作完成后才会执行下一个操作,这种执行过程就像按照任务列表逐项完成一样,依照线性</div>
                    </li>
                    <li><a href="/article/1829281618355908608.htm"
                           title="Prompt Engineering Concepts" target="_blank">Prompt Engineering Concepts</a>
                        <span class="text-muted">初梦语雪</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/NLP/1.htm">NLP</a><a class="tag" taget="_blank" href="/search/prompt/1.htm">prompt</a>
                        <div>Introduction,ConceptsTextgenerationmodelsgenerationpre-trainedtransformers,GPTforshort.所以呢,前置知识是TransformerAssistants助手指的是能够为用户执行任务的实体;Embeddings是数据的一种vector形式,含有原来的数据的内容和/或意义;Tokens很常见,很基础的概念。Textgen</div>
                    </li>
                    <li><a href="/article/1829280861787353088.htm"
                           title="C#的正则表达式" target="_blank">C#的正则表达式</a>
                        <span class="text-muted">weixin_30553065</span>

                        <div>C#中正则表达式的使用目前为止,许多编程语言和工具都包含对正则表达式的支持,C#也不例外,C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的类(Regex、Match、Group等)。那么,什么是正则表达式,怎么定义正则表达式呢?一、正则表达式基础l什么是正则表达式在编写字符串的处理程序时,经常会有查找符合某些复杂规</div>
                    </li>
                    <li><a href="/article/1829279981491023872.htm"
                           title="PostgreSQL HAVING 子句" target="_blank">PostgreSQL HAVING 子句</a>
                        <span class="text-muted">嘀嗒运维</span>

                        <div>HAVING子句可以让我们筛选分组后的各组数据。WHERE子句在所选列上设置条件,而HAVING子句则在由GROUPBY子句创建的分组上设置条件。语法下面是HAVING子句在SELECT查询中的位置:SELECTFROMWHEREGROUPBYHAVINGORDERBYHAVING子句必须放置于GROUPBY子句后面,ORDERBY子句前面,下面是HAVING子句在SELECT语句中基础语法:SE</div>
                    </li>
                                <li><a href="/article/54.htm"
                                       title="JAVA中的Enum" target="_blank">JAVA中的Enum</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a>
                                    <div>Enum是计算机编程语言中的一种数据类型---枚举类型。 在实际问题中,有些变量的取值被限定在一个有限的范围内。       例如,一个星期内只有七天 我们通常这样实现上面的定义: 
public String monday;
public String tuesday;
public String wensday;
public String thursday</div>
                                </li>
                                <li><a href="/article/181.htm"
                                       title="赶集网mysql开发36条军规" target="_blank">赶集网mysql开发36条军规</a>
                                    <span class="text-muted">Bill_chen</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E4%B8%9A%E5%8A%A1%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">业务架构设计</a><a class="tag" taget="_blank" href="/search/mysql%E8%B0%83%E4%BC%98/1.htm">mysql调优</a><a class="tag" taget="_blank" href="/search/mysql%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">mysql性能优化</a>
                                    <div>(一)核心军规   (1)不在数据库做运算      cpu计算务必移至业务层;   (2)控制单表数据量      int型不超过1000w,含char则不超过500w;      合理分表;      限制单库表数量在300以内;   (3)控制列数量      字段少而精,字段数建议在20以内</div>
                                </li>
                                <li><a href="/article/308.htm"
                                       title="Shell test命令" target="_blank">Shell test命令</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a><a class="tag" taget="_blank" href="/search/test/1.htm">test</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97/1.htm">数字</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E6%AF%94%E8%BE%83/1.htm">文件比较</a>
                                    <div>Shell test命令 
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。  数值测试    参数 说明   -eq 等于则为真   -ne 不等于则为真   -gt 大于则为真   -ge 大于等于则为真   -lt 小于则为真   -le 小于等于则为真    
实例演示: 
num1=100
num2=100if test $[num1]</div>
                                </li>
                                <li><a href="/article/435.htm"
                                       title="XFire框架实现WebService(二)" target="_blank">XFire框架实现WebService(二)</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</a>
                                    <div>   有了XFire框架实现WebService(一),就可以继续开发WebService的简单应用。 
Webservice的服务端(WEB工程): 
两个java bean类: 
Course.java 
   package cn.com.bean; 
public class Course { 
    private </div>
                                </li>
                                <li><a href="/article/562.htm"
                                       title="重绘之画图板" target="_blank">重绘之画图板</a>
                                    <span class="text-muted">朱辉辉33</span>
<a class="tag" taget="_blank" href="/search/%E7%94%BB%E5%9B%BE%E6%9D%BF/1.htm">画图板</a>
                                    <div>       上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。 
       画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就</div>
                                </li>
                                <li><a href="/article/689.htm"
                                       title="Java的IO流" target="_blank">Java的IO流</a>
                                    <span class="text-muted">西蜀石兰</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>刚学Java的IO流时,被各种inputStream流弄的很迷糊,看老罗视频时说想象成插在文件上的一根管道,当初听时觉得自己很明白,可到自己用时,有不知道怎么代码了。。。 
每当遇到这种问题时,我习惯性的从头开始理逻辑,会问自己一些很简单的问题,把这些简单的问题想明白了,再看代码时才不会迷糊。 
 
IO流作用是什么? 
答:实现对文件的读写,这里的文件是广义的; 
 
Java如何实现程序到文件</div>
                                </li>
                                <li><a href="/article/816.htm"
                                       title="No matching PlatformTransactionManager bean found for qualifier 'add' - neither" target="_blank">No matching PlatformTransactionManager bean found for qualifier 'add' - neither</a>
                                    <span class="text-muted">林鹤霄</span>

                                    <div>java.lang.IllegalStateException: No matching PlatformTransactionManager bean found for qualifier 'add' - neither qualifier match nor bean name match! 
  
网上找了好多的资料没能解决,后来发现:项目中使用的是xml配置的方式配置事务,但是</div>
                                </li>
                                <li><a href="/article/943.htm"
                                       title="Row size too large (> 8126). Changing some columns to TEXT or BLOB" target="_blank">Row size too large (> 8126). Changing some columns to TEXT or BLOB</a>
                                    <span class="text-muted">aigo</span>
<a class="tag" taget="_blank" href="/search/column/1.htm">column</a>
                                    <div>原文:http://stackoverflow.com/questions/15585602/change-limit-for-mysql-row-size-too-large 
  
异常信息: 
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAM</div>
                                </li>
                                <li><a href="/article/1070.htm"
                                       title="JS 格式化时间" target="_blank">JS 格式化时间</a>
                                    <span class="text-muted">alxw4616</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>/**
 * 格式化时间 2013/6/13 by 半仙 alxw4616@msn.com
 * 需要 pad 函数
 * 接收可用的时间值.
 * 返回替换时间占位符后的字符串
 *
 * 时间占位符:年 Y 月 M 日 D 小时 h 分 m 秒 s 重复次数表示占位数
 * 如 YYYY 4占4位 YY 占2位<p></p>
 * MM DD hh mm</div>
                                </li>
                                <li><a href="/article/1197.htm"
                                       title="队列中数据的移除问题" target="_blank">队列中数据的移除问题</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97%E7%A7%BB%E9%99%A4/1.htm">队列移除</a>
                                    <div>  
   队列的移除一般都是使用的remov();都可以移除的,但是在昨天做线程移除的时候出现了点问题,没有将遍历出来的全部移除,  代码如下; 
  
   // 
package com.Thread0715.com;

import java.util.ArrayList;

public class Threa</div>
                                </li>
                                <li><a href="/article/1324.htm"
                                       title="Runnable接口使用实例" target="_blank">Runnable接口使用实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/Runnable/1.htm">Runnable</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a>
                                    <div>Runnable接口 
a.       该接口只有一个方法:public void run(); 
b.       实现该接口的类必须覆盖该run方法 
c.       实现了Runnable接口的类并不具有任何天</div>
                                </li>
                                <li><a href="/article/1451.htm"
                                       title="oracle里的extend详解" target="_blank">oracle里的extend详解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/extend/1.htm">extend</a>
                                    <div>扩展已知的数组空间,例: 
DECLARE
  TYPE CourseList IS TABLE OF VARCHAR2(10);
  courses CourseList;
BEGIN
  --   初始化数组元素,大小为3
  courses := CourseList('Biol   4412 ', 'Psyc   3112 ', 'Anth   3001 ');
  --   </div>
                                </li>
                                <li><a href="/article/1578.htm"
                                       title="【httpclient】httpclient发送表单POST请求" target="_blank">【httpclient】httpclient发送表单POST请求</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a>
                                    <div>浏览器Form Post请求 
浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求 
1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据 
2. Form </div>
                                </li>
                                <li><a href="/article/1705.htm"
                                       title="【Hive十三】Hive读写Avro格式的数据" target="_blank">【Hive十三】Hive读写Avro格式的数据</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a>
                                    <div> 1. 原始数据 
hive> select * from word; 
OK
1	MSN  
10	QQ  
100	Gtalk  
1000	Skype  
  
  
 2. 创建avro格式的数据表 
  
hive> CREATE TABLE avro_table(age INT, name STRING)STORE</div>
                                </li>
                                <li><a href="/article/1832.htm"
                                       title="nginx+lua+redis自动识别封解禁频繁访问IP" target="_blank">nginx+lua+redis自动识别封解禁频繁访问IP</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>在站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误时,可利用nginx+lua+redis实现在指定的时间段 内,若单IP的请求量达到指定的数量后对该IP进行封禁,nginx返回403禁止访问。利用redis的expire命令设置封禁IP的过期时间达到在 指定的封禁时间后实行自动解封的目的。 
一、安装环境: 
 
 CentOS x64 release 6.4(Fin</div>
                                </li>
                                <li><a href="/article/1959.htm"
                                       title="java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历" target="_blank">java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;


public class BinTreeTraverse {
	//private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	private int[] array={ 10,6,</div>
                                </li>
                                <li><a href="/article/2086.htm"
                                       title="Spring源码学习-XML 配置方式的IoC容器启动过程分析" target="_blank">Spring源码学习-XML 配置方式的IoC容器启动过程分析</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a>
                                    <div>以FileSystemXmlApplicationContext为例,把Spring IoC容器的初始化流程走一遍: 
 

ApplicationContext context = new FileSystemXmlApplicationContext
            ("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml&q</div>
                                </li>
                                <li><a href="/article/2213.htm"
                                       title="[科研与项目]民营企业请慎重参与军事科技工程" target="_blank">[科研与项目]民营企业请慎重参与军事科技工程</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A/1.htm">企业</a>
                                    <div> 
 
     军事科研工程和项目 并非要用最先进,最时髦的技术,而是要做到“万无一失” 
 
   而民营科技企业在搞科技创新工程的时候,往往考虑的是技术的先进性,而对先进技术带来的风险考虑得不够,在今天提倡军民融合发展的大环境下,这种“万无一失”和“时髦性”的矛盾会日益凸显。。。。。。所以请大家在参与任何重大的军事和政府项目之前,对</div>
                                </li>
                                <li><a href="/article/2340.htm"
                                       title="spring 定时器-两种方式" target="_blank">spring 定时器-两种方式</a>
                                    <span class="text-muted">cuityang</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>方式一: 
间隔一定时间 运行 
 
<bean id="updateSessionIdTask" class="com.yang.iprms.common.UpdateSessionTask" autowire="byName" /> 
 
 <bean id="updateSessionIdSchedule</div>
                                </li>
                                <li><a href="/article/2467.htm"
                                       title="简述一下关于BroadView站点的相关设计" target="_blank">简述一下关于BroadView站点的相关设计</a>
                                    <span class="text-muted">damoqiongqiu</span>
<a class="tag" taget="_blank" href="/search/view/1.htm">view</a>
                                    <div>终于弄上线了,累趴,戳这里http://www.broadview.com.cn 
  
简述一下相关的技术点 
  
前端:jQuery+BootStrap3.2+HandleBars,全站Ajax(貌似对SEO的影响很大啊!怎么破?),用Grunt对全部JS做了压缩处理,对部分JS和CSS做了合并(模块间存在很多依赖,全部合并比较繁琐,待完善)。 
  
后端:U</div>
                                </li>
                                <li><a href="/article/2594.htm"
                                       title="运维 PHP问题汇总" target="_blank">运维 PHP问题汇总</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/windows2003/1.htm">windows2003</a>
                                    <div>1、Dede(织梦)发表文章时,内容自动添加关键字显示空白页 
解决方法: 
后台>系统>系统基本参数>核心设置>关键字替换(是/否),这里选择“是”。 
后台>系统>系统基本参数>其他选项>自动提取关键字,这里选择“是”。 
  
2、解决PHP168超级管理员上传图片提示你的空间不足 
网站是用PHP168做的,反映使用管理员在后台无法</div>
                                </li>
                                <li><a href="/article/2721.htm"
                                       title="mac 下 安装php扩展 - mcrypt" target="_blank">mac 下 安装php扩展 - mcrypt</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展,具体如下: 
 
  
  下载并解压libmcrypt-2.5.8.tar.gz。 
  在终端执行如下命令:  tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --disable-posix-threads --</div>
                                </li>
                                <li><a href="/article/2848.htm"
                                       title="MongoDB更新文档 [四]" target="_blank">MongoDB更新文档 [四]</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/Mongodb%E6%9B%B4%E6%96%B0%E6%96%87%E6%A1%A3/1.htm">Mongodb更新文档</a>
                                    <div>MongoDB更新文档 
转载请出自出处:http://eksliang.iteye.com/blog/2174104 
MongoDB对文档的CURD,前面的博客简单介绍了,但是对文档更新篇幅比较大,所以这里单独拿出来。 
语法结构如下: 
db.collection.update( criteria, objNew, upsert, multi) 
参数含义    参数   </div>
                                </li>
                                <li><a href="/article/2975.htm"
                                       title="Linux下的解压,移除,复制,查看tomcat命令" target="_blank">Linux下的解压,移除,复制,查看tomcat命令</a>
                                    <span class="text-muted">y806839048</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>重复myeclipse生成webservice有问题删除以前的,干净 
 
 1、先切换到:cd usr/local/tomcat5/logs 
 
2、tail -f catalina.out 
 
3、这样运行时就可以实时查看运行日志了 
 
 
 
 
Ctrl+c 是退出tail命令。 
 有问题不明的先注掉 
   cp /opt/tomcat-6.0.44/webapps/g</div>
                                </li>
                                <li><a href="/article/3102.htm"
                                       title="Spring之使用事务缘由(3-XML实现)" target="_blank">Spring之使用事务缘由(3-XML实现)</a>
                                    <span class="text-muted">ihuning</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>  
用事务通知声明式地管理事务 
  
事务管理是一种横切关注点。为了在 Spring 2.x 中启用声明式事务管理,可以通过 tx Schema 中定义的 <tx:advice> 元素声明事务通知,为此必须事先将这个 Schema 定义添加到 <beans> 根元素中去。声明了事务通知后,就需要将它与切入点关联起来。由于事务通知是在 <aop:</div>
                                </li>
                                <li><a href="/article/3229.htm"
                                       title="GCD使用经验与技巧浅谈" target="_blank">GCD使用经验与技巧浅谈</a>
                                    <span class="text-muted">啸笑天</span>
<a class="tag" taget="_blank" href="/search/GC/1.htm">GC</a>
                                    <div>前言 
GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。 
dispatch_once_t必须是全局或static变量 
这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下:        1  </div>
                                </li>
                                <li><a href="/article/3356.htm"
                                       title="linux(Ubuntu)下常用命令备忘录1" target="_blank">linux(Ubuntu)下常用命令备忘录1</a>
                                    <span class="text-muted">macroli</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                                    <div>在使用下面的命令是可以通过--help来获取更多的信息1,查询当前目录文件列表:ls 
 
 ls命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息:  
 ls / 显示/.下的所有文件和目录  
 ls -l 给出文件或者文件夹的详细信息 
 ls -a 显示所有文件,包括隐藏文</div>
                                </li>
                                <li><a href="/article/3483.htm"
                                       title="nodejs同步操作mysql" target="_blank">nodejs同步操作mysql</a>
                                    <span class="text-muted">qiaolevip</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a>
                                    <div>// db-util.js
var mysql = require('mysql');
var pool = mysql.createPool({
  connectionLimit : 10,
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'test',
  port: 3306
});

</div>
                                </li>
                                <li><a href="/article/3610.htm"
                                       title="一起学Hive系列文章" target="_blank">一起学Hive系列文章</a>
                                    <span class="text-muted">superlxw1234</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/Hive%E5%85%A5%E9%97%A8/1.htm">Hive入门</a>
                                    <div>  
[一起学Hive]系列文章 目录贴,入门Hive,持续更新中。 
  
[一起学Hive]之一—Hive概述,Hive是什么 
[一起学Hive]之二—Hive函数大全-完整版 
[一起学Hive]之三—Hive中的数据库(Database)和表(Table) 
[一起学Hive]之四-Hive的安装配置 
[一起学Hive]之五-Hive的视图和分区 
[一起学Hive</div>
                                </li>
                                <li><a href="/article/3737.htm"
                                       title="Spring开发利器:Spring Tool Suite 3.7.0 发布" target="_blank">Spring开发利器:Spring Tool Suite 3.7.0 发布</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>Spring Tool Suite(简称STS)是基于Eclipse,专门针对Spring开发者提供大量的便捷功能的优秀开发工具。 
  
在3.7.0版本主要做了如下的更新: 
  
 
 将eclipse版本更新至Eclipse Mars 4.5 GA 
 Spring Boot(JavaEE开发的颠覆者集大成者,推荐大家学习)的配置语言YAML编辑器的支持(包含自动提示,</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>