我正在使用DOMDocument创建一个HTML文件,但是在使用getElementsByTagName方法搜索时遇到了问题。我发现,因为我正在生成热,所以无法识别我插入的标签。
我尝试使用DOMXPath,但无济于事:S
现在,我要做的就是遍历一个节点的所有子节点并存储在一个数组中,但是我需要转换那个得分DOMNodeList,并且在做
return (DOMNodeList) $ my_array;
生成语法错误。
我的具体问题是,如何使用getElementsByTagName方法搜索标签或我可以提供的其他替代方案来实现任务?
回顾我当时正在生成的DOMDocument。
如果您需要更多信息,我很乐意将其置于问题中。
当然Jonathan Sampson。
我为编辑问题道歉。我对这个论坛格式不太了解。
为了更好地理解我所做的事情,我把继承链。
我有这个基类
abstract class ElementoBase {
...
}
我有这个继承自前一个类的类,带有一个抽象函数insert(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标签列表
如果您需要更多信息,我很乐意将其置于问题中。
答案 0 :(得分: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;
}
答案 1 :(得分: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);