序文
系統的は常にXMLを学びたいと思っ、XML上で学校の外に、今夜は数時間を学ぶための時間がありません。数日が来て、より多くのもの、理解するのが難しい何も覚えておく必要があり、ほとんどのバックを振り返りました。
XMLデータ転送フォーマット
第一章XMLの概要
導入1.1
私たちは本当に助けが、嘆きことはできませんが、速度を変更するときは、この標準を採用するXML標準の開発の急速な進歩だけでなく、ソフトウェア開発者の多数を見ると、これは本当に素晴らしいです。
現在、XMLのWebロールは、アジアでプレーするHTMLなどのWebの基盤としていないと。
XMLはどこにでもあります。XMLは、さまざまなアプリケーション間でデータを転送するための最も一般的に使用されるツールで、情報の保管および説明の分野でますます人気が高まっています。
XMLは何の主な目的は?
1.プログラム間のデータ伝送通信(クロス言語送信することができます)2.コンフィギュレーションファイルのconfig.xml
小さなデータベースとして機能3.ストアデータ、
利点:
仕様データ読みやすい構造データを有するフォーマット、およびプロセス
1.2 XMLとは何ですか
拡張マークアップ言語XML(eXtensible Markup Language:拡張マークアップ言語)を意味し、送信して保存データに設計されています。独自のタグ、ラベル、自己説明的な名前を定義するXML、XMLは、W3C標準の推奨ストレージのデータ転送です。
HTMLとXMLの違いは?
1.htmlラベルはXMLのみカスタムラベル、カスタマイズすることができません。2.html構文要件が厳格ではない、非常に厳格な要件のためのXML構文は、ラベルが閉じていなければなりません。
3.XMLは、コンテンツデータの焦点であり、送信および格納データに設計された、外部のフォーカスデータ提示されるHTMLデータを表示するように設計されました。
XML章IIの基本的な構文
2.1構文規則
1.XML文書はルート要素を持っている必要があり、ルート要素は他のすべての要素の親です。
文書内の必要がある場合2.XML宣言は、最初の行の任意の部分であります
いわゆる文書宣言は、パーサー、現在のドキュメント形式、バージョン番号、およびエンコード形式を伝えることです。
3.すべてのXML要素は、タグを閉じペアでなければなりません。非終了タグは違法である、パーサはない通常の解像度せず、エラーを報告します。
4.XMLタグは大文字と小文字が区別され、開始と終了タグと一致していなければなりません。
5.XMLラベルは、親子関係がクロスネストされたラベルにすることはできません、である、クロスのネストはできません。
6.XMLタグ名に特殊文字を使用しない、英数字のみを使用しようと強調しました。
HTML構文でコメントで7.XMLコメント。
8.特殊文字実体参照&
XMLでは、いくつかの文字を使用すると、文字を入れた場合、パーサは、新しい要素の始まりとしてそれを使用するので、「<」XML要素に、エラーが発生し、特別な意味を持つ<age>46 < 100 </age>
XMLエラーが発生します。この。回避エラー、特殊文字を置き換えるために使用実体参照を、使用するHTMLの書式と同じの物理的な文字に
エンティティ参照 | 文字エンティティ | 意味 |
---|---|---|
&LT | < | -less未満 |
&GT | > | より-greaterよりも大きいです |
&#038 | & | そして--ampersand |
&APOS | " | 単一引用符-apostrophe |
&QUOT | " | 二重引用符-quotationマーク |
2.2要素のプロパティ
XML要素は、という条件で、1つ以上の属性を追加することができます
属性値は引用符(単一または二重引用符)にを使用する必要があります。同じ命名規則とネーミング属性のname要素
プロパティの要素は、繰り返しに許可されていません
属性は、ストアデータが、HTML内の実際の開発経験、財産の使用彼らは非常に便利に使用されますが、XMLで、あなたはので、プロパティを利用するのは避けるべき
1.属性は、複数の値を含めることはできません(要素が缶)2.プロパティの値は、データ(要素のことが可能)に構成することができません
3.属性は、(将来の変更のための)拡張が容易ではありません
4.プロパティは読み取りおよび維持することは困難です。
概要:目的の属性と子要素のデータが送信データであり、かつサブ要素は、より簡単に解決し、より良いメンテナンス、および参照のより容易されています。
2.3 CDATA
特殊文字の多数に対処するために、実体参照はもはや(ほとんどがあまりにも面倒、重いワークロードが)データパッケージすることができますCDATA元の形式の出力を使用することができますに対処することはできません。
フォーマット:
<test><![CDATA[第一题题1:已知 c<4,d>5,问:c和d那个更好看? ]]> </test>
実体参照とCDATAはの機会を使用します。
含有量が比較的小さい場合には1を、特殊文字を直接使用実体参照、交換することができます。より多くのコンテンツ2.は、それがCDATAセクションを使用することをお勧めします。
XML文書を解析するPHPを使用して第3章
非常に、非常に強力なライブラリを提供PHP5バージョン、後に、SimpleXMLのライブラリは、操作を解析するXML文書の実現に専念します。PHPは、ハンドルXMLデータにこのライブラリを使用しています。
3.1 XML解析原理
XMLの合計を解析するとき3手順を実行します:
- メモリーにXMLドキュメントを読みます
2. DOMツリー構造が形成される(文書のDOMツリーの構造は、単に親子ことが分かります)
SimpleXMLオブジェクトを生成します。3.
3.2のSimpleXMLライブラリー
構文:simplexml_load_file( 'のtest.xml');
<?xml version="1.0" encoding="UTF-8"?>
<user>
<man>
<name>aklman</name>
<age>20</age>
<sex>男</sex>
</man>
<man sex="男">
<name>ak</name>
<age>22</age>
</man>
</user>
$xml=simplexml_load_file('test.xml');//引入文件并读取
var_dump($xml);//输出,输出个格式就是一个对象
1.現在のノードがオブジェクトがによって読み取られている場合 - >アクセスされます。2.ノードは、現在アクセスされる[]にアレイによって読み取られた場合、
3.3トラバースXMLデータ
経由1.foreachループ
$xml=simplexml_load_file('test.html);
foreach($xml->man as $v){
echo 'Name:'.$v->name.'Age:'.$v->age.'<br>';
}
通じ2.forループ
$xml=simplexml_load_file('test.html);
$length=count($xml);
for($i=0;$i<$length;$i++){
echo $xml->man[$i]->name;
}
読み込み時に属性ノードのXMLを解析するために、親ノード、PHPに追加する属性
$xml=simplexml_load_file('test.xml');
echo $xml->man[1]->attributes()->sex;
//attributes()方法是用来获取节点属性,
//内存中节点属性存放在attributes中,它是一个以为数组,可以使用attributes()方法获取
3.4のSimpleXML追加ノード
$xml=simplexml_load_file('test.html);
$man=
//创建添加子节点
$man = $xml->addChild('man');
//为节点添加属性
$man->addAttribute('sex','女');
//创建添加子节点及节点值
$man->addChild('name','aklman');
$man->addChild('age','23');
var_dump($xml);//打印,已经添加到内存
$xml->asXML('test1.xml');//保存数据进XML文件,没有文件,则创建;
3.5ケース
場合に、携帯電話の所有権、データ集約ネットワークのソースを照会
<form action="03.5.php" method="get">
<input type="text" name="num"><br>
<input type="submit" value="提交">
</form>
//接受前台提交的数据
$tel = $_GET['num'];
//组装请求地址
$url = 'http://v.juhe.cn/telephone/index?telephoneNumber='.$tel.'&dtype=xml&format=&key=810c3b2c488bc37d5f521196d8799a7211';//地址已经打乱了,需要从聚合网购买
//发送请求并接受返回的数据
$s = file_get_contents($url);
// echo $s; //打印返回的XML数据
//使用 simplexml_load_string 函数读入并解析XML数据
$xml = simplexml_load_string($s);
//找到并打印我们想要的数据
echo '归属省:'.$xml->result->place->city111.'<hr>';
echo '归属城市:'.$xml->result->place->city.'<hr>';
第IV章XPath言語
4.1概要
XPathは、XML文書言語で発見情報であり、XPathは、XML文書内の要素と属性を横断するために使用することができます。
4.2を使用すると文法
注意:
1.データのクエリの絶対パス
$xml = simplexml_load_file('user.xml');
//按节点的绝对路径查找
$data = $xml->xpath('/user/man/name');//返回数组
foreach($data as $v){
echo $v.'<hr>';
}
/*
*如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径,
*绝对路径实现数据查询必须一级一级的查询下去,不能越级。
*/
2.データクエリの相対パス
$xml = simplexml_load_file('user.xml');
//按节点的相对路径查找
$data = $xml->xpath('//name');//返回数组
foreach($data as $v){
echo $v.'<hr>';
}
/*
*如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)
*/
3. *すべてのノードを一致させます
$xml = simplexml_load_file('user.xml');
//匹配man节点下的所有元素节点。
$data = $xml->xpath('//man/*');//返回数组
foreach($data as $v){
echo $v.'<hr>';
}
データを実装するために、クエリの形で4. []括弧
$xml = simplexml_load_file('user.xml');
//匹配man节点下的最后一个节点。
$data = $xml->xpath('//man[last()]');//返回数组
var_dump($data);
echo $data[0]->name;
//man[1] : 获取第一个man元素
//man[last()]:获取最后一个man元素
//man[age > 200] :获取age>200的man节点
/*
*方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置
*默认从1开始,而last()函数则表示选择集中的最后一个元素,括号内还可以放置表达式
*/
5.要素を取得するプロパティ
$xml = simplexml_load_file('user.xml');
//匹配man节点下含有sex属性的节点。
$data = $xml->xpath('//man[@sex]');//返回数组
var_dump($data);
echo $data[0]->name;