我试图在我的注释上面添加换行符在XML文档中的根节点之上.
我需要这样的东西:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--DO NOT EDIT THIS FILE-->
<projects>
</projects>
Run Code Online (Sandbox Code Playgroud)
但是我能得到的是这个(在根中断行但我需要在评论后换行):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--DO NOT EDIT THIS FILE--><projects>
</projects>
Run Code Online (Sandbox Code Playgroud)
我需要在评论之后添加换行符.有没有办法做到这一点?
我的代码:
import java.io.File;
import java.io.FileInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
public class XMLNewLine {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("Adding comment..");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db;
try {
Document doc; …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个FF AddOn,它可以从网站上获取一些XML数据.但我找不到解析我的回应的方法.首先我使用DOMParser但是我收到此错误:
ReferenceError:未定义DOMParser.
有人建议使用XMLHttpRequest,因为解析是自动完成的,但后来我得到了另一个错误:
错误:发生异常.回溯(最近一次调用最后一次):
文件"resource://jid0-a23vmnhgidl8wlymvolsst4ca98-at-jetpack/api-utils/lib/cuddlefish.js",第208行,在require let模块中,manifest = this.manifest [base], requirer = this.modules [base]; TypeError:this.manifest未定义
我真的不知道还能做什么.我必须注意,我正在使用AddOn Builder来实现这一目标.
下面的代码似乎不起作用.
选项1:
exports.main = function() {
require("widget").Widget({
id: "widgetID1",
label: "My Mozilla Widget",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function(event) {
var Request = require("request").Request;
var goblecontent = Request({
url: "http://www.myexperiment.org/search.xml?query=goble",
onComplete: function (response) {
var parser = new DOMParser();
var xml = parser.parseFromString(response.text, "application/xml");
var packs = xml.getElementsByTagName("packs");
console.log(packs);
}
});
goblecontent.get();
}
});
};
Run Code Online (Sandbox Code Playgroud)
选项2:
exports.main = function() {
require("widget").Widget({
id: "widgetID1",
label: "My …Run Code Online (Sandbox Code Playgroud) 我只是试图解析并附加JavaScript字符串作为DOM元素.我找到了两种快速的方法,其中一种方法是使用DOMParser,就像在这个流行的SO答案中看到的那样.两种方法都有效,但是,DOMParser出于某种原因,这种方法并不尊重我定义的内联样式 - 即使两种方法都注入了完全相同的动态标记.考虑以下...
<div></div>
Run Code Online (Sandbox Code Playgroud)
var parent = document.getElementsByTagName('div')[0]
// ---- case 1 ---------------
var parser = new DOMParser();
var node = parser.parseFromString('<p style="color: red">foo</p>', 'text/xml').firstChild;
parent.appendChild(node);
// ---- case 2 ---------------
var wrapper= document.createElement('div');
wrapper.innerHTML= '<p style="color: red">foo</p>';
var node2 = wrapper.firstChild;
parent.appendChild(node2);
Run Code Online (Sandbox Code Playgroud)
每个方法都相应地注入节点,DOM反映以下内容......
<div>
<p style="color: red">foo</p>
<p style="color: red">foo</p>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,只有最后一个是红色的!知道这可能会发生什么吗?
JSFiddle - 复制演示
我一直在使用DOMParser对象将文本字符串解析为XML树.但是,它在Web Worker的上下文中不可用(当然,也不是document.ELEMENT_NODE或者需要的各种其他常量).还有其他办法吗?
请注意,我不想操纵当前页面的DOM.XML文件不包含HTML元素或任何类型的元素.实际上,我根本不想触摸文档对象.我只想提供如下文本字符串:
<car color="blue"><driver/></car>
Run Code Online (Sandbox Code Playgroud)
...并找回合适的树形结构和遍历它的方法.我也不关心模式验证或任何花哨的东西.我知道<SCRIPT>的XML,许多人可能觉得它很有用(因此我在这里链接到它),但是它的许可并不适合我.我不确定jQuery是否包含XML解析器(我对这个东西很新),但即使它确实(并且它可以在Worker中使用),我也不会包含额外的~50K代码行这个功能.
我想我可以在JavaScript中编写一个简单的XML解析器,我只是想知道我是否错过了更快的选项.
我想操作一个 html 字符串,在 vanillaJS 中我会这样做:
let HTMLString = '<p>hello</p>
<style>
p{
color:black
}
<p>world</p>
'
const parser = new DOMParser();
const doc = parser.parseFromString(HTMLString, "text/html");
doc.querySelectorAll('style').forEach(item => item.remove())
Run Code Online (Sandbox Code Playgroud)
这也适用于反应,但我相信,由于下一步编译服务器端,它只会抛出DOMParser is not defined,我尝试过像这样的包html-react-parser,它们只是将html解析为反应元素,然后提供非常有限的功能,我最后的手段是使用正则表达式,但我认为这不是一个好主意。
任何帮助都会很好,谢谢
我有一个小问题:
代码归结为以下内容(给定一个id为"target"的节点):
var string = '<div class="makeitpink">this should be pink, but is not</div>';
var parser = new DOMParser();
var domNode = parser.parseFromString(string,"text/xml");
document.getElementById("target").appendChild(domNode.firstChild);
Run Code Online (Sandbox Code Playgroud)
如果您运行测试用例,然后通过firebug/chrome Web检查器检查目标节点并选择jsfiddle的iframe的body标签中的任何节点,并执行"编辑为HTML",则将随机字符串添加为字符串[不是属性]对于domnode,要清楚,并且"保存",应用样式.但不是在那之前.说我很困惑是轻描淡写.
有人可以澄清这里发生了什么吗?谢谢.
我正在为传单使用 KML 插件,该插件在 Google Chrome 中运行良好。但是,在 IE 中,它会在以下代码中引发错误。
parser=new DOMParser();
console.log(url) // outputs: "path/to/kmlfile.kml" in Chrome debugger
url=parser.parseFromString(url,"text/xml"); //This line throws a parser error in IE 11, but is fine in Chrome
Run Code Online (Sandbox Code Playgroud)
在我看来,这段代码有一个错误——作者应该将一个实际的 XML 字符串,而不仅仅是一个指向 XML 文档的 url 传递给 parser.parseFromString() 函数。解析器会出错是有道理的,因为文件路径不是有效的 XML 文件(注意:kml 文件只是 XML)。但是,这并不会导致Chrome Debugger工具抛出任何错误,这真的很奇怪。
在我看来,这在两种情况下都应该失败。DOMParser 上的 Trusty MDN 文档没有提到将 URL 作为参数放在 parseFromString() 中。所以我的问题是为什么这在 Chrome 中有效,但在 IE 中抛出错误,然后我该怎么做才能修复它?
请注意,此问题与以下 url 不同,因为这不是一般错误 - 这是关于在 Chrome 中有效但在 IE 中失败的问题:Internet Explorer 11 (IE 11) Throws Syntax Error using parseFromString in DOMParser
我在我的项目中使用角度.但没关系)
我必须使用DOMParser来检查和编辑一个字段中的一些数据(.Content)
一切都还可以......我已经安装了iOS 7的iPad 3并且很惊讶......
为什么DOMParser不在iOS 7上工作(但适用于iOS 8+)?
我如何在iOS 7上解决这个问题?也许有一些解决方法?
这是我的代码的一部分:
var parser = new DOMParser();
var doc = parser.parseFromString('<div id="fetchContent">' + $scope.news.Content + '</div>', "text/html");
...
$scope.news.Content = doc.getElementById('fetchContent').innerHTML;
Run Code Online (Sandbox Code Playgroud)
如果我删除此代码 - 应用程序正常工作,但与DOMParser似乎它引起了错误...
我有大量来自 Excel 的 html 剪贴板数据,大约 250MB(虽然它包含很多格式,所以在实际粘贴时,数据比那个小得多)。
目前我正在使用以下内容DOMParser,这只是一行代码,一切都发生在幕后:
const doc3 = parser.parseFromString(htmlString, "text/html");
Run Code Online (Sandbox Code Playgroud)
然而,解析它需要大约 18 秒,在此期间页面完全阻塞,直到它完成——或者,如果卸载给网络工作者,一个没有任何进展的动作,只是“等待”18 秒,直到某些事情最终发生- 我认为这与冻结几乎相同,即使是的,用户可以真正与页面交互。
有没有其他方法来解析一个大的 html/xml 文件?也许使用一些不会立即加载所有内容的东西,因此可以响应,或者什么可能是一个很好的解决方案?我想以下内容可能符合它?但不太确定:https : //github.com/isaacs/sax-js。
更新:这是一个示例 Excel 文件:https : //drive.google.com/file/d/1GIK7q_aU5tLuDNBVtlsDput8Oo1Ocz01/view?usp=sharing。您可以下载文件,在 Excel 中打开它,按 Cmd-A(全选)和 Cmd-C(复制),它会将数据粘贴到剪贴板中。对我来说,复制剪贴板中的 text/html 格式需要 249MB。
是的,它也可以在 teext/plain(我们用作备份)中使用,但从 text/html 中获取它的重点是捕获格式(两种数据格式,例如 numberType=Percent,3 位小数和 stylistic ,例如,背景颜色=红色)。请使用它作为任何示例代码的测试。这是test/html剪贴板中的实际内容(asci):https ://drive.google.com/file/d/1ZUL2A4Rlk3KPqO4vSSEEGBWuGXj7j5Vh/view?usp=sharing
我正在编写一个用户脚本,该脚本在我想要解析为 HTML DOM 树的HTML 文档上运行https://example.net并发出请求。fetchhttps://example.com
APIfetch只给我原始的 HTML 源代码。我可以使用 自己解析它DOMParser,但是我遇到了相对链接的问题。假设来自的文档https://example.com包含如下内容:
<!DOCTYPE html>
<html>
<head>
<body>
<p> <a href="/foo">hello!</a>
Run Code Online (Sandbox Code Playgroud)
如果我获取该元素的 DOM 节点body > p > a并读取其href属性,我获取的值将是https://example.net/foo。这是因为DOMParser将环境文档的源位置分配给解析结果。我想将其指定为文档的实际来源,以便正确解析相关链接。
目前我能想到的唯一解决方法是:
<base>元素注入 DOM 树,这可能会干扰<base>实际 HTML 源中存在的标签document.implementation.createHTMLDocument()and then .write(),它给我一个带有空白源位置的文档,其中相对链接至少没有被错误解析(但根本不会被解析)。但这在用户脚本中不起作用:它会抛出一个SecurityError.Proxy拦截对href属性的访问,这似乎太重量级,无法轻松地适合用户脚本我还意识到从 Unicode 文本中解析 HTML.text()将绕过 HTML 编码检测算法。我自己可以忍受这一点,因为我感兴趣的网站专门使用标头中正确表示的 UTF-8,但这也是一个应该注意的缺陷。理想情况下,HTML 文档应该直接从 …
domparser ×10
javascript ×8
dom ×4
html ×3
xml ×3
angularjs ×1
ios ×1
java ×1
line-breaks ×1
next.js ×1
reactjs ×1
web-worker ×1