0

DOMDocumentでHTMLファイルを作成しているのですが、getElementsByTagNameメソッドによる検索時に問題があります。私が見つけたのは、ホットを生成しているため、挿入したラベルを認識しないということです。

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タグのリストを返します

さらに情報が必要な場合は、喜んで質問に入れます。

4

2 に答える 2

0

DOMDocumentを使用して有効なHTMLファイルを作成したと想定しています。基本的な問題は、HTMLドキュメントで特定のタグ名を解析または検索することです。HTMLファイルを検索するには、PHPで利用できる最善のソリューションはSimpleHTMLDOMパーサーです。

次のコードを実行するだけで完了です。

$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 に答える
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 に答える