ページの DOM ツリーを作成して探索することにより、このページの左側に表示されるカテゴリを抽出しました。ここで、新しい DOM を作成してサーバーに保存し、ローカルで再読み込みして、プロセス全体をスピードアップしたいと考えています。元の DOM を調べているときにそうすることにしました。元の DOM の調査が機能するため、パラメーターが正しいと仮定します。
DOM を作成するために、次のコードを記述します。
$curr_lev=1;
$mydom=new DOMdocument();
$curr_parent=$mydom->createElement('products');
function create_dom($name, $link, $lev){
global $curr_lev;
global $curr_parent;
global $mydom;
switch ($lev){
case $curr_lev:
$curr_parent->appendChild($mydom->createElement($name, $link));
break;
case $curr_lev-1:
$curr_parent=$curr_padre->parentNode;
$curr_parent->appendchild($mydom->createElemnt($name, $link));
break;
case $curr_lev+1:
$curr_parent=$curr_padre->lastChild;
$curr_parent->appendchild($mydom->createElement($name, $link));
break;
}
$curr_lev=$lev;
}
$mydom->formatOutput=TRUE;
$mydom->saveHTMLFile("products.xml");
説明を試みcreate_dom()
ます。元の DOM の各ノードに対して呼び出されます。$lev
新しいノードのレベルを示します。$curr_lev
これは最後に追加されたノードのレベルであるため、それらが等しい場合、最後に追加されたノードと現在のノードは同じ親の子であり、$lev < $curr_lev
1 つのレベルと新しく追加されたノードに戻る必要がある場合$lev > $curr_lev
現在のノードが最後に追加されたノードの子である場合、最後に追加されたノードの親の「兄弟」です。
最初の問題は、実行すると次のエラーが発生することです。
致命的なエラー: C:\Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php:71 でメッセージ '無効な文字エラー' を含む例外 'DOMException' がキャッチされませんでした: 71
スタック トレース:
#0 C: \Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php(71): DOMDocument->createElement('/joomla/compone...', 'Arduino')
#1 C: \Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php(30): create_dom('Arduino', '/joomla/compone...', 1)
#2 C:\ Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php(38): visita_raff(Object(DOMElement), 1, 'dl')
#3 C:\Users\Jacopo\Dropbox\ Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php(96):visita_raff(オブジェクト(DOMElement), 0, '')
#4 C:\Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\index.php(21): include('C:\Users\Jacopo...') #5 {main} スローC:\Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php の 71 行目
$name
通常は「arduino kit」のように見え、 $link
「/joomla/component/virtuamart/...」のようになります
UTF-8に変換しようとしましたが、うまくいきません
また、私はテストを行い、このコードを書き込もうとしました:
function create_xml(){
$mydom=new DOMdocument("1.0", "ISO-8859-1");
$primoElem=$mydom->createElement('foo');
$primoElem->appendChild($mydom->createElement('arduinio', 'http:arduino'));
$mydom->formatOutput=TRUE;
return $mydom->saveXML("foo.xml");
}
エラーsaveXML()
は返されませんが、ファイルには何も書き込まれません!
私は何を間違っていますか?私がそれらのことを扱うのは初めてなので、優しくしてください:)