我有PHP的简单HTML DOM解析器,我使用以下标记:
$html = file_get_html('http://www.google.com');
Run Code Online (Sandbox Code Playgroud)
但是,如何将帖子变量(如cURL)发送到该页面并获得响应?例如
$html = file_get_html('http://www.google.com', array("Item"=>"Value", "Item2"=>"Value2"));
Run Code Online (Sandbox Code Playgroud) 这里是片段:
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");
Run Code Online (Sandbox Code Playgroud)
尝试执行这些行时出现错误:
错误:组件返回失败代码:0x80004001(NS_ERROR_NOT_IMPLEMENTED)[nsIDOMParser.parseFromString]
我试着弄清楚发生了什么,但代码似乎是正确的,我在网上搜索,我来到这里没有任何线索.
你以前遇到过这种失败吗?如果是的话,这个bug隐藏在哪里?
代码
var txt = '<div id="hi">fe</div><div id="h2">fe</div><div id="hj">fe</div>'
var parser = new DOMParser();
var temp_node = parser.parseFromString(txt, "text/html").documentElement;
console.log(temp_node)
Run Code Online (Sandbox Code Playgroud)
这段代码产生了完整的html文档,其中包括
<html><head></head><body>
<div id="hi">fe</div>
<div id="h2">fe</div>
<div id="hj">fe</div>
</body></html>
Run Code Online (Sandbox Code Playgroud)
如果我只想要这个<div id="hi">fe</div><div id="h2">fe</div><div id="hj">fe</div>
部分怎么办?我该怎么做?
并且,如果我想要附加所有节点,有没有办法在没有循环的情况下执行它?
parentNode.appendChile(temp_node) // add the entire code
parentNode.appendChile(temp_node.firstElementChild.nextElementSibling) // add the parent <body> and the other layers inside
parentNode.appendChild(temp_node.firstElementChild.nextElementSibling.childNodes) // doesn't do the trick, it complains about not being a "node", I guess I'd need an "appendChilds" function that allows to add many nodes at once …
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取使用 DOMParser 解析的元素的样式属性。不过,2 个 console.log 都是空的。知道为什么会发生这种情况吗?
<div id='foobar'>
<style>
.xl496
{
color:#336699;
}
</style>
<table>
<tr>
<td class='xl496'>Test:</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
var data = document.getElementById("foobar");
var parser = new DOMParser();
var doc = parser.parseFromString(data.innerHTML, "text/html");
var cols = doc.getElementsByTagName("tr");
var col = cols[0];
var tds = col.getElementsByTagName("td");
var td = tds[0];
console.log(getComputedStyle(td).getPropertyValue("color"));
console.log(td.style.color);
Run Code Online (Sandbox Code Playgroud) 我在代码中使用DOMParser,如下所示:
\n html`${this.domParser.parseFromString(this.richText, \'text/html\').body.children}`\n
Run Code Online (Sandbox Code Playgroud)\n阅读文档后,我有点担心这Cross site Scripting attacks
仍然是可能的,因为正如文档所述:
\n\n您可以使用 XMLSerializer 接口执行相反的操作\xe2\x80\x94将 DOM 树转换为 XML 或 HTML 源\xe2\x80\x94。
\n
然而它也声明它返回
\n\n\nDocument 或 XMLDocument,具体取决于 mimeType 参数。
\n
那么使用这种方法是否有助于保护您的网站免受攻击XSS
?
尝试将 Dom-Parser 与 Discord.js 一起使用。无法从其他地方找到帮助。第 15 行出错fs.readFile
我在 fs 工作时也遇到了很多问题。首先它没有定义,然后在初始化之前无法运行,刚刚修复了这个问题(我希望)
// Discord stuff.
const Discord = require('discord.js');
const client = new Discord.Client();
const config = require('./config.json');
const token = config.token;
// DomParser
var DomParser = require('dom-parser');
var parser = new DomParser();
var data = fs.readFileSync(filepathHidden);
// Other requirements
var fs = require('fs');
// when getting online.
client.once('ready', () => {
console.log('WAHAHAHA IM ALIVE!');
}),
fs.readFile('https://url.com)', 'utf8', function(err, html){
if (!err){
var dom = parser.parseFromString(html);
console.log(dom.getElementsByClassName('new_solution_box_title').innerHTML);
}
})
client.login(token);
Run Code Online (Sandbox Code Playgroud) 任何人都可以在JAXB中解释UnMarshaller和Parser之间的区别.我读过像UnMarshaller那样用来从XML文档中检索值.Parser也做了同样的事情.有人请解释一下差异.
例如:考虑下面的示例zoo.xml
<zoo>
<zooName>Vandalur Zoo</zooName>
<zooId>12321</zooId>
<animals>
<animal>
<animalName>Lion</animalName>
<animalType>Wild</animalType>
</animal>
Run Code Online (Sandbox Code Playgroud)
使用UnMarshaller,
JAXBContext jaxbContext = JAXBContext
.newInstance("com.javapapers.xml.jaxb");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement<?> zoo = (JAXBElement<?>) unmarshaller
.unmarshal(new FileInputStream("zoo.xml"));
ZooInfo zooInfo = (ZooInfo) zoo.getValue();
Run Code Online (Sandbox Code Playgroud)
使用解析器:
File fXmlFile = new File("zoo.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
Run Code Online (Sandbox Code Playgroud) 我试图通过DOMParser将字符串解析为完整的HTML文档,然后用处理过的节点覆盖当前页面.该字符串包含完整的标记,包括<!doctype>
,<html>
,<head>
和<body>
节点.
// parse the string into a DOMDocument element:
var parser = new DOMParser();
var doc = parser.parseFromString(data, 'text/html');
// set the parsed head/body innerHTML contents into the current page's innerHTML
document.getElementsByTagName('head')[0].innerHTML = doc.getElementsByTagName('head')[0].innerHTML;
document.getElementsByTagName('body')[0].innerHTML = doc.getElementsByTagName('body')[0].innerHTML;
Run Code Online (Sandbox Code Playgroud)
这是因为它成功地获取了已解析的HTML节点并在页面上呈现它们; 但是,解析后的字符串中<script>
的<head>
或<body>
节点中存在的任何标记都无法执行= [.直接使用html
标签进行测试(与head
/ 相反body
)会产生相同的结果.
我也尝试过使用.appendChild()
而不是.innerHTML()
改变:
var elementHtml = document.getElementsByTagName('html')[0];
// remove the existing head/body nodes from the page
while …
Run Code Online (Sandbox Code Playgroud) 我尝试使用 DocumentBuilder 用 Java 编写一个简单的 XML 文件。我希望 XML 文件看起来像这样:
<outer>
<inner>
<element name="WEB"/>
<element name="WEB"/>
<element name="WEB"/>
</inner>
</outer>
Run Code Online (Sandbox Code Playgroud)
但它生成它是这样的:
<outer>
<inner>
<element name="WEB"/>
<element name="WEB"/>
<element name="WEB"/>
</inner>
</outer>
Run Code Online (Sandbox Code Playgroud)
为什么第三个元素与其他两个元素的缩进不同?注意:我再次读取 XML 文件以模拟项目中的一种方法,其中读取 XML 文件,添加一个元素并将其保存到 XML 文件。这是我的代码:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.IOException;
public class main {
private static String FILEPATH = "/tmp/xmltest.xml";
private static DocumentBuilderFactory docFactory;
private static DocumentBuilder docBuilder;
private static TransformerFactory …
Run Code Online (Sandbox Code Playgroud) 我正在使用 DOMParser 来解析带有 html 标签的字符串,以将其附加到另一个 dom 节点上
window.addEventListener("load",carga);
var origen = document.getElementById('origen');
var destino = document.getElementById('destino');
function carga(e){
origen.addEventListener('dragstart',function(e){
e.dataTransfer.setData("Text",origen.outerHTML);
},false);
destino.addEventListener('dragover',function(e){
e.preventDefault();
});
destino.addEventListener('drop',function(e){
e.preventDefault();
console.log( e.dataTransfer.getData("Text"));
var parser = new DOMParser();
dragged = parser.parseFromString( e.dataTransfer.getData("Text") , "text/html");
console.log(dragged);
destino.appendChild(dragged);
},false);
}
Run Code Online (Sandbox Code Playgroud)
拖动变量的内容是:
<section draggable="true" id="origen" style="height: 50px; width: 50px; border-color: green; border-style: solid;">origen</section>
Run Code Online (Sandbox Code Playgroud) domparser ×10
javascript ×7
html ×3
xml ×3
dom ×2
xml-parsing ×2
appendchild ×1
discord ×1
indentation ×1
java ×1
jaxb ×1
node.js ×1
parsing ×1
php ×1
xss ×1