我通过创建和探索页面的 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
我们必须返回一层和新添加的节点如果$lev > $curr_lev
当前节点是最后添加的节点的子节点,则为最后添加的父节点的“兄弟”。
第一个问题是,当我执行时出现此错误:
致命错误:在 C:\Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php:71
堆栈跟踪:
#0 C:中未捕获的异常“DOMException”和消息“无效字符错误”: \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:\用户\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} 抛出在第 71 行的 C:\Users\Jacopo\Dropbox\Tirocinio\xampp-portable\htdocs\sites\prova\cerca categorie.php
$name
通常看起来像“arduino kit”, $link
就像“/joomla/componenent/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()
返回 1,但文件中没有写入任何内容!
我究竟做错了什么?请考虑这是我第一次使用这些东西所以要温柔:)