PHP は、xmllint コマンドを使用して XML と HTML を処理します (xmllintxml)。
この記事の例では、PHP が xmllint コマンドを使用して xml と html を処理する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
xmllint は、xml の処理と検証、および html の処理に非常に便利なツールです。Linux では、libxml2 がインストールされている限り、このコマンドを使用できます。まず、--html パラメーターと --xpath パラメーターを使用して HTML を処理する例を見てみましょう:
例は次のとおりです:
コードをコピーします コードは次のとおりです:curl http://www.bkjia.com /ip/?q=8.8.8.8 2>/dev/null --html --xpath " //ul[ @id='csstb']" - 2>/dev/null | sed -e 's/<[^>]*>//g'
上記例では、123chaのIPアドレスの所有権を問い合わせた結果(ul#csstb)を抽出してテキスト部分の内容のみを取得しています。上記のスクリプトステートメントを実行した結果は次のようになります:
[あなたのクエリ]:8.8.8.8
このサイトの主なデータ:
アメリカ合衆国
このサイトの補助データ: Google Public DNS 提供:hypo
米国 Google の無料 Google Public DNS が提供するもの: zwstar 参照データ 1: 米国
参考データ2:アメリカ
他の主要なパラメータの使用法を例を挙げて見てみましょう。
1、 --format
このパラメータは、読みやすいように XML をフォーマットするために使用されます。
次の内容の xml (person.xml) があるとします。
コードをコピーします
コードは次のとおりです:<人><名前>ボール名前><年齢>30年齢<性別>男性性別>人>
次の操作を実行すると、出力はより読みやすい XML 形式になります:
コードをコピーします
コードは次のとおりです:#xmllint --format person.xml
ボール
<年齢>30年齢>
<性別>男性性別>
人>
2. --ノーブランク
--format とは逆に、送信量を節約するために、xml 内の空白を削除したい場合があります。この場合は、--noblanks コマンドを使用できます。
xml(person.xml)の内容が以下のようだとします
コードをコピーします
コードは次のとおりです:
ボール
<年齢>30年齢>
<性別>男性性別>
人>
このパラメータ操作を実行した後の出力結果は次のようになります:
コードをコピーします
コードは次のとおりです:#xmllint --noblanks person.xml
ボール名前>30男性性別>人>
3、--スキーマ
scheam を使用して XML ファイルの正しさを検証します (XML スキーマは XML ベースの DTD の置き換えです)
xmlファイル(person.xml)とscheamファイル(person.xsd)があるとします 内容は以下の通りです
person.xml
コードをコピーします
コードは次のとおりです:
ボール
<年齢>30年齢>
<性別>男性性別>
人>
person.xsd
コードをコピーします
コードは次のとおりです:
以下のようにコマンドを実行した後の結果は:
复制代価代価如下:
#xmllint --schema person.xsd person.xml
ボール
<年齢>30年齢>
<性別>男性性別>
人>
person.xml が検証します
注: 承認の場合、承認後には承認されたファイルの内容が出力されますが、 --noout オプションを使用してこの出力を削除すると、最後の承認結果のみを取得できます。
复制代码代码如下:
#xmllint --noout --schema person.xsd person.xml
person.xml は検証します
次に、person.xml を変更して、このファイルの年齢フィールドと性別が xsd の定義に一致しないようにします。
复制代码代码如下:#xmllint --noout --schema person.xsd person.xml
person.xml:4: 要素 age: スキーマ妥当性エラー: 要素 'age': 'not age' はアトミック タイプ 'xs:integer' の有効な値ではありません。
person.xml:5: 要素の性別: スキーマの妥当性エラー: 要素 'sex': [ファセット '列挙'] 値 'test' はセット {'male', ' Female'} の要素ではありません。
person.xml:5: 要素の性別: スキーマの妥当性エラー: 要素 'sex': 'test' はローカル アトミック タイプの有効な値ではありません。
person.xml の検証に失敗します
xmllint の成功の成果を確認できます!
4、--スキーマの出力について
在讲输出前先看下一场景,假如你想通過php実行xmllint然后到返結果,你的代コード通常应该是这个样子valid.php
复制代码
代码如下:
$command = "xmllint --noout --schema person.xsd person.xml";
exec($command, $output, $retval);
//出错時に返值不値0
if ($retval != 0){
var_dump($output);
}
他{
エコー「そうだね!」;
}
エラーは上記の person.xml に保存されます。
このコードを実行すると、得られる出力はエラーではなく、array(0) {} であることがわかります。これは素晴らしいことです。
なぜそうなるのでしょうか?
xmllint --schema により、検証中にエラーが発生した場合、エラー メッセージは標準出力 (stdout) には表示されず、標準エラー (stderr) に表示されます。
exec の出力パラメータは、標準出力 (stdout) で表示される内容のみを取得できます。
したがって、エラー メッセージを取得するには、標準エラーを標準出力にリダイレクトし、それに応じてコードを変更する必要があります。
コードをコピーします コードは次のとおりです:
$command = "xmllint --noout --schema person.xsd person.xml 2>$1";
再度 valid.php を実行するとエラーメッセージが正常に表示されます。
例は次のとおりです:
まず、次の内容を含む po.xml という名前の XML ドキュメントを作成します。
コードをコピーします コードは次のとおりです:
<発送先国="米国">
<請求先国 = "米国">
急いで、うちの芝生が荒れてます!
<アイテムパーツ番号="872-AA">
芝刈り機
<数量>1数量>
148.95
これが電気であることを確認してください
<アイテムパーツ番号="926-AA">
<数量>1数量>
&lt; usprice&gt; 39.98&lt;/usprice&gt;
1999-05-21
アイテム>
次に、po.xml 用に作成されたスキーマ ファイルの名前は po.xsd となり、内容は次のとおりです。
コードをコピーします
コードは次のとおりです:
Example.com の注文書スキーマ
著作権は 2000 Example.com にあります。無断転載を禁じます。
www.jb51.net
xmllint 对 po.xml 文件进行校验を使用:
倍制コード 代コードは次のようになります:
$ xmllint -schema po.xsd po.xml
場合は問題がない場合、通知は校閲を通過します。
ここで説明されている大規模な PHP プログラムの設計が役立つことを望みます。
http://www.bkjia.com/PHPjc/928228.html
www.bkjia.com本当http://www.bkjia.com/PHPjc/928228.html技術記事 PHP は、xmllint コマンドを使用して xml を html で処理する方法、xmllintxml では、PHP で xmllint コマンドを使用して、xml を html で処理する方法について説明します。