我搜索了一个解决方案,但没有任何相关性,所以这是我的问题:
我想解析一个包含HTML文本的字符串.我想用JavaScript做.
我试过这个库,但它似乎解析了我当前页面的HTML,而不是字符串.因为当我尝试下面的代码时,它会更改我的页面标题:
var parser = new HTMLtoDOM("<html><head><title>titleTest</title></head><body><a href='test0'>test01</a><a href='test1'>test02</a><a href='test2'>test03</a></body></html>", document);
我的目标是从HTML外部页面中提取链接,就像字符串一样.
你知道一个API来做吗?
我知道最近已经讨论过添加innerHTML到文档片段,并且希望能够将其包含在DOM标准中.但是,在此期间您应该使用的解决方法是什么?
就是这样
var html = '<div>x</div><span>y</span>';
var frag = document.createDocumentFragment();
我想要div的span内部和内部frag都有一个简单的单行.
没有循环的奖励积分.jQuery是允许的,但我已经尝试过$(html).appendTo(frag); frag之后仍然是空的.
这是我一直遇到的一些困难.我有一个本地客户端脚本,需要允许用户获取远程网页并搜索结果页面的表单.为了做到这一点(没有正则表达式),我需要将文档解析为完全可遍历的DOM对象.
我想强调的一些限制:
getElementsByTagName需要提供DOM API等.假设我在变量中有一个完整的HTML文档字符串(包括DOCTYPE声明)html,这是我到目前为止所尝试的:
var frag = document.createDocumentFragment(),
div  = frag.appendChild(document.createElement("div"));
div.outerHTML = html;
//-> results in an empty fragment
div.insertAdjacentHTML("afterEnd", html);
//-> HTML is not added to the fragment
div.innerHTML = html;
//-> Error (expected, but I tried it anyway)
var doc = new ActiveXObject("htmlfile");
doc.write(html);
doc.close();
//-> JavaScript executes
我也尝试从HTML中提取<head>和<body>节点,并将它们添加到<HTML>片段内的元素,仍然没有运气.
有没有人有任何想法?
尝试在我的js代码中使用DOMParser时遇到问题.在我的代码中,我通过xmlhttp.responseText soap响应检索xml文件.我希望能够以JSON格式访问其元素,因此我的代码如下所示:
var xml = new DOMParser();
xml = xml.parseFromString(xmlhttp.responseText, 'text/xml');
var result = xmlToJson(xml);
我收到此错误消息:ReferenceError:未定义DOMParser
编辑:这个链接对我不起作用,因为我的javascript不在HTML页面中,因为它是一个node.js文件. JavaScript DOMParser访问innerHTML和其他属性
我正在编写一个插件,它将表情符号转换为特定网站的文本块中的图像.简单的答案是使用正则表达式来检测innerHTML上的触发器文本并插入img标记,然后将字符串传递回innerHTML部分中的dom元素.DOM元素块可能已经在innerHTML部分中具有锚<a>和/或文本格式<b>,<i>,<u>.
例如
    var textBlock = pItems[i].innerHTML;
    var kissSource = 'https://mail.google.com/mail/e/35D';
    textBlock = textBlock.replace(/(^|[^<]|[^>]):\*/g, "<img class='emoticon' src='" + kissSource + "' />");
 -->      pItems[i].innerHTML = textBlock;  //<-can I avoid this to be in compliance with Mozilla addons reqmnts
我搜索了几个小时如何将DOM(或HTML字符串)转换为XML(我知道:HTML!= XLM 如何将HTML作为XML读取?但也许是div的一部分?),这反过来可能是转换为JSON,后者又可以转换回以下DOM:https: //developer.mozilla.org/en-US/docs/XUL/School_tutorial/DOM_Building_and_HTML_Insertion?redlocale = en-US&redctsctslug = XUL_School%2FDOM_Building_and_HTML_Insertion#JSON_Templating
我不知道jQuery,所以如果有可能使用javascript,那将是理想的.
我是否应该在不针对innerHTML运行正则表达式的情况下解决此问题,从而避免问题?
非常感谢,JennaS
一些背景:
我正在使用 JavaScript 开发基于 Web 的移动应用程序。HTML 呈现基于 Safari。跨域策略已禁用,因此我可以使用 XmlHttpRequests 调用其他域。这个想法是解析外部 HTML 并获取特定元素的文本内容。
过去我是逐行解析文本,找到我需要的行。然后获取标记的内容,它是该行的子字符串。这很麻烦,每次目标html发生变化时都需要大量维护。
所以现在我想将 html 文本解析为 DOM 并在其上运行 css 或 xpath 查询。
它运作良好:
$('<div></div>').append(htmlBody).find('#theElementToFind').text()
唯一的问题是,当我使用浏览器将 html 文本加载到 DOM 元素时,它会尝试加载所有外部资源(图像、js 文件等)。虽然它没有造成任何严重的问题,但我想避免这种情况。
现在的问题是:
如何在浏览器不加载外部资源或运行 js 脚本的情况下将 html 文本解析为 DOM?
我一直在思考的一些想法:
document.implementation.createDocument())创建新文档对象,但我不确定它是否会跳过外部资源的加载。这里是片段:
html  = "<!doctype html>";
html += "<html>";
html += "<head><title>test</title></head>";
html += "<body><p>test</p></body>";
html += "</html>";
parser = new DOMParser();
dom = parser.parseFromString (html, "text/html");
尝试执行这些行时出现错误:
错误:组件返回失败代码:0x80004001(NS_ERROR_NOT_IMPLEMENTED)[nsIDOMParser.parseFromString]
我试着弄清楚发生了什么,但代码似乎是正确的,我在网上搜索,我来到这里没有任何线索.
你以前遇到过这种失败吗?如果是的话,这个bug隐藏在哪里?
在Google Chrome(Canary)上,似乎没有字符串可以使DOM解析器失败.我正在尝试解析一些HTML,但如果HTML不完全,100%,有效,我希望它显示错误.我试过了明显的事:
var newElement = document.createElement('div');
newElement.innerHTML = someMarkup; // Might fail on IE, never on Chrome.
我也在这个问题上试过这个方法.无效标记不会失败,即使是我能生成的最无效的标记也是如此.
那么,至少有一些方法可以在Google Chrome中"严格"解析HTML吗?我不想自己使用令牌或使用外部验证实用程序.如果没有其他选择,那么严格的XML解析器就可以了,但某些元素不需要在HTML中关闭标记,最好不要失败.
javascript ×8
dom ×3
html ×3
html-parsing ×2
cross-domain ×1
domparser ×1
innerhtml ×1
jquery ×1
node.js ×1
xml ×1
xml-parsing ×1