0

我正在使用 DOMDocument 创建一个 HTML 文件,但在使用 getElementsByTagName 方法进行搜索时出现问题。我发现当我产生热时,无法识别我插入的标签。

我尝试使用 DOMXPath,但无济于事:S

现在,我要做的是遍历一个节点的所有子节点并存储在一个数组中,但我需要转换该分数 DOMNodeList,并在做

return (DOMNodeList) $ my_array;

生成语法错误。

我的具体问题是,如何使用 getElementsByTagName 方法或我可以提供的其他替代方法来搜索标签以完成任务?

回想一下我当时正在生成的 DOMDocument。

如果您需要更多信息,我很乐意将其放在问题中。

当然是乔纳森桑普森。

我为编辑问题的方式道歉。我不太了解这种论坛格式。

为了更好地理解我的工作,我将继承链。

我有这个基类

abstract class ElementoBase {
    ...
}

而且我有这个类继承自前一个类,带有一个抽象函数插入(insert)

abstract class Elemento extends ElementoBase {
    ...
    public abstract function insertar ( $elemento );
}

然后我有一系列代表从上面继承的 HTML 标记的类,即。

class A extends Elemento {
}
...

现在我用来在纸张中插入标签的代码如下:

public function insertar ( $elemento ) {

$this->getElemento ()->appendChild ( $elemento->getElemento () );
}

其中函数getElemento(),返回一个DOMElement

此外,在插入元素之前,根据要插入的 HTML 标记进行一些验证,因为它们都有非常具体的规范。

由于我同时在生成 HTML 代码,所以很明显没有 HTML 文件。

对于你的问题,理论告诉我这样做:

$myListTags = $this->getElemento ()->getElementsByTagName ( $tag );

但我总是返回 null,所以我研究了它,因为我没有加载 HTML 文件,因为如果我

$myHtmlFile = $this->getDocumento ()->loadHTMLFile ( $filename );
$myListTags = $myHtmlFile->getElementsByTagName ( $etiqueta );

我确实返回了 HTML 标签列表

如果您需要更多信息,我很乐意将其放在问题中。

4

2 回答 2

0
$doc = new DOMDocument('1.0', 'iso-8859-1');
$doc->appendChild(
    $doc->createElement('Filiberto', 'It works!')
);

$nodeList = $doc->getElementsByTagName('Filiberto');

var_dump($nodeList->item(0)->nodeValue);
于 2012-05-21T02:18:20.517 回答
0

我假设您已经使用 DOMDocument 创建了一个有效的 HTML 文件。您的基本问题是解析或搜索特定标签名称的 HTML 文档。要搜索 HTML 文件,PHP 中可用的最佳解决方案是Simple HTML DOM parser

您只需运行以下代码即可完成!

$html = file_get_html('url to your html file');

foreach($html->find('tag name') as $element) 
{
// perform the action you want to do here.
// example: echo $element->someproperty;

}     
于 2012-05-20T04:42:46.673 回答