如何使用PHP DOMDocument获取第一级节点?
我不熟悉PHPDOM对象,有一个问题我找不到解决方案。我有一个包含以下HTML的文档:如何使用PHP DOMDocument获取第一级节点?,php,dom,Php,Dom,我不熟悉PHPDOM对象,有一个问题我找不到解决方案。我有一个包含以下HTML的文档: <div id="header"> </div> <div id="content"> <div id="sidebar"> </div> <div id="info"> </div> </div> <div id="footer"> </div> 但这让我
<div id="header">
</div>
<div id="content">
<div id="sidebar">
</div>
<div id="info">
</div>
</div>
<div id="footer">
</div>
但这让我得到了所有的div。有什么建议吗?您可能需要跳出DOMDocument-可能需要转换为SimpleXML或DOMDxpath
$file = $DOCUMENT_ROOT. "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("/");
您可能需要跳出DOMDocument,可能需要转换为SimpleXML或DOMDxpath
$file = $DOCUMENT_ROOT. "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("/");
下面是我如何获取第一级元素(在本例中,表行中的顶级TD元素:
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->loadHTML( $tr_element );
$xpath = new DOMXPath( $doc );
$td = $xpath->query("//tr/td[1]")->item(0);
do{
if( $innerHTML = self::DOMinnerHTML( $td ) )
array_push( $arr, $innerHTML );
$td = $td->nextSibling;
} while( $td != null );
$arr现在包含顶部的TD元素,但不包含您将从中获得的嵌套表TDs
$dom->getElementsByTagName( 'td' );
DOMinnerHTML函数是我在某个地方遇到的,用于获取元素/节点的innerHTML:
public static function DOMinnerHTML( $element, $deep=true )
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$tmp_dom = new DOMDocument();
$tmp_dom->appendChild( $tmp_dom->importNode( $child, $deep ) );
$innerHTML.=trim($tmp_dom->saveHTML());
}
return $innerHTML;
}
下面是我如何获取第一级元素(在本例中,表行中的顶级TD元素:
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->loadHTML( $tr_element );
$xpath = new DOMXPath( $doc );
$td = $xpath->query("//tr/td[1]")->item(0);
do{
if( $innerHTML = self::DOMinnerHTML( $td ) )
array_push( $arr, $innerHTML );
$td = $td->nextSibling;
} while( $td != null );
$arr现在包含顶部的TD元素,但不包含您将从中获得的嵌套表TDs
$dom->getElementsByTagName( 'td' );
DOMinnerHTML函数是我在某个地方遇到的,用于获取元素/节点的innerHTML:
public static function DOMinnerHTML( $element, $deep=true )
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$tmp_dom = new DOMDocument();
$tmp_dom->appendChild( $tmp_dom->importNode( $child, $deep ) );
$innerHTML.=trim($tmp_dom->saveHTML());
}
return $innerHTML;
}