2012-05-20 31 views
0

我正在创建一个带有DOMDocument的HTML文件,但我在getElementsByTagName方法搜索时遇到了问题。我发现的是,当我产生热时,不识别我插入的标签。GetElementsByTagName替代DOMDocument

我试图与DOMXPath,但无济于事:S

现在,我要做的就是经过在阵列中的节点和存储的所有孩子,但我需要的是得分转换DOMNodeList,并在做

return (DOMNodeList) $ my_array; 

生成语法错误。

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

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

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

当然乔纳森桑普森。

我很抱歉编辑问题的方式。我不太了解这个论坛格式。

为了更好地理解我所做的事情,我放置了继承链。

我有这个基类

abstract class ElementoBase { 
    ... 
} 

我有这个类是从以前的一个继承,有一个抽象函数插入(插入)

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

你能告诉我们你是如何将这些标签,你怎么叫他们? – Sampson

回答

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; 

}  
+0

是的,我有良好的训练,是的,你是对的,但细节是,我有HTML文件,因为它尚未完全生成,这将不得不等待完成创建它,但也会( )不过,我会记住,如果你没有得到任何其他的解决方案。 感谢您的输入 –

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); 
+0

谢谢克里斯,但你告诉我你的代码是什么我这样做,我开始重新思考,因为我正在开发代码,实际上你放置的是我所做的,但是细节并没有放在代码的第一行,因为它从DOMImplementation开始并从那里开始生成我的HTML,现在问题解决了。使用getElementsByTagName方法是定义文档的版本和编码:),非常感谢你为了这份贡献,让我觉得自己在做事情 –

相关问题