【问题标题】:Can I echo all HTML tags in the W3C specification using DOM?我可以使用 DOM 回显 W3C 规范中的所有 HTML 标记吗?
【发布时间】:2010-11-21 09:43:35
【问题描述】:

我正在使用这个简单的 PHP HTML 解析器:http://simplehtmldom.sourceforge.net。是否可以用它来回显HTML规范的所有标签?

【问题讨论】:

  • 你的意思是回显当前 HTML 文档中存在的所有标签,还是 HTML 规范中存在的所有 HTML 标签?
  • 所有标签都存在于html规范中

标签: php dom


【解决方案1】:

给你:

$dom = new DOMDocument;
$dom->load('http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd');
$xsns = 'http://www.w3.org/2001/XMLSchema';
$elements = array();
foreach ($dom->getElementsByTagNameNS($xsns, 'element') as $element) {
    if ($element->hasAttribute('name')) {
        echo $element->getAttribute('name');
        $docs = $element->getElementsByTagNameNS($xsns, 'documentation');
        foreach ($docs as $doc) {
            echo "\t", $doc->nodeValue;
        }
        echo PHP_EOL;
    }
}

上面的代码将输出XHTML1 Transitional(不是HTML)的架构定义(不是DTD)中的所有元素类型以及任何文档,例如

pre
      content is "Inline" excluding
         "img|object|applet|big|small|sub|sup|font|basefont"

它使用 PHP 的原生 DOM 扩展来做到这一点。 The DOM extension 在下面使用libxml,在速度方面优于 SimpleHtmlDom,并提供对标记的控制。 The DOM interface is a language agnostic W3C specification.

有关 DOM 扩展的替代方案,请参阅

【讨论】:

  • 要比较 Simple Html DOM Parser 和 DOMDocument,请参阅我的回答 hereherehere
【解决方案2】:

不,该解析器是一个简单的 HTML 解析器,它没有解析 DTD 的能力,并且它用于处理 HTML 元素的内部逻辑没有公开(或者甚至以一种可以使以人类可读的形式呈现它的方式稍微表达)方便)。

【讨论】:

  • 我应该怎么做才能回显一个 html 标签?
  • 这是一个不同的问题,人们需要知道你为什么要这样做才能提供一个好的答案。
  • 如果有 dtd 解析器,我找到了一个链接 stackoverflow.com/questions/2917940/…,但不幸的是,不存在。
  • @Stupefy 不正确。问题名称为PEAR package XML_DTD_Parser
【解决方案3】:

在文档中说

// Dumps the internal DOM tree back into string
$str = $html;

// Print it!
echo $html; 

我认为 echo 应该是 $str 而不是 $html 但这就是文档所说的。


// Dumps the internal DOM tree back into string
$str = $html->save();

// Dumps the internal DOM tree back into a file
$html->save('result.htm');

希望这会有所帮助。

文档:http://simplehtmldom.sourceforge.net/manual.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2011-05-12
    • 2010-10-17
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多