在html5中能使用dom么??,如何使HTML5与DOMDocument一起使用?

我正在尝试使用DOMDocument解析HTML代码,对其进行更改,然后将其组合回我发送到输出的字符串 .

但是有一些关于解析的问题,这意味着我发送给DOMDocument的内容并不总是以相同的形式返回:)

这是一个清单:

格式化我的文档,无论 preserveWhitespace 和 formatOutput 设置如何(在预先格式化的文本上丢失空格)

当我拥有像 , 等html5标签时

给我错误 . 但是他们可以被压制,所以我可以忍受这个 .

产生不一致的标记 - 例如,如果我添加 元素(带有自闭标记),解析/ saveHTML后输出将为

对来自

所有标签都以相同的方式关闭,例如 变为 ;但这可以用正则表达式修复 .

我没有尝试HTML5lib,但出于性能原因,我更喜欢DOMDocument而不是自定义解析器

更新:

就像使用CDATA提到的Honeymonster一样,修复了loadXML的主要问题 .

有没有什么方法可以防止除了某个集合之外的所有空HTML标签的自动关闭,而不使用正则表达式?

现在我有:

$html = $dom->saveXML($node);

$html = preg_replace_callback('#<(\w+)([^>]*)\s*/>#s', function($matches){

// ignore only these tags

$xhtml_tags = array('br', 'hr', 'input', 'frame', 'img', 'area', 'link', 'col', 'base', 'basefont', 'param' ,'meta');

// if a element that is not in the above list is empty,

// it should close like `` (for eg. empty `

`)

return in_array($matches[1], $xhtml_tags) ? "<{$matches[1]}{$matches[2]} />" : "<{$matches[1]}{$matches[2]}>{$matches[1]}>";

}, $html);

哪个有效,但它也会替换CDATA内容,我不想要......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaScript的DOM(文档对象模型)来动态生成HTML内容。具体而言,可以通过JavaScript代码创建新的HTML元素,并将它们添加到现有的HTML文档中。以下是一个简单的示例,演示如何使用DOM动态生成HTML内容: ```html <!DOCTYPE html> <html> <head> <title>动态生成HTML内容示例</title> </head> <body> <h1 id="title"></h1> <p id="content"></p> <script> var title = "动态生成HTML内容"; var content = "这是一个使用JavaScript DOM动态生成HTML内容的示例。"; // 创建新的HTML元素 var titleElement = document.createElement("h1"); var contentElement = document.createElement("p"); // 设置元素属性和内容 titleElement.setAttribute("id", "title"); titleElement.innerHTML = title; contentElement.setAttribute("id", "content"); contentElement.innerHTML = content; // 将元素添加到现有的HTML文档中 document.body.appendChild(titleElement); document.body.appendChild(contentElement); </script> </body> </html> ``` 在这个例子中,我们首先在HTML页面中定义了两个`<h1>`和`<p>`标签,分别用于显示标题和内容。然后,在JavaScript代码中,我们定义了两个变量`title`和`content`,用于存储标题和内容的文本。接下来,我们使用`document.createElement()`方法创建了两个新的HTML元素`titleElement`和`contentElement`。然后,我们使用`setAttribute()`方法设置了元素的属性`id`,并使用`innerHTML`属性设置了元素的内容。最后,我们使用`appendChild()`方法将新元素添加到现有的HTML文档中。运行该代码后,将动态生成一个带有标题和内容的HTML页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值