标签: domparser

在根节点之前在xml文件中添加linebreak

我试图在我的注释上面添加换行符在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)

java xml line-breaks domparser

11
推荐指数
2
解决办法
8902
查看次数

如何使用Add-on SDK解析Firefox插件中的XML字符串

我正在尝试创建一个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)

firefox-addon domparser firefox-addon-sdk

9
推荐指数
1
解决办法
2838
查看次数

为什么DOMParser不保留解析DOM的内联样式?

我只是试图解析并附加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 - 复制演示

html javascript dom domparser

9
推荐指数
1
解决办法
913
查看次数

解析Web Worker中的XML

我一直在使用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解析器,我只是想知道我是否错过了更快的选项.

javascript xml web-worker domparser

7
推荐指数
2
解决办法
4567
查看次数

如何在 next.js 中使用 DOMParser?

我想操作一个 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解析为反应元素,然后提供非常有限的功能,我最后的手段是使用正则表达式,但我认为这不是一个好主意。

任何帮助都会很好,谢谢

javascript dom domparser reactjs next.js

7
推荐指数
1
解决办法
7077
查看次数

DOMParser注入DOM但是一旦注入就不应用css样式表?

我有一个小问题:

http://jsfiddle.net/9xwUx/1/

代码归结为以下内容(给定一个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,要清楚,并且"保存",应用样式.但不是在那之前.说我很困惑是轻描淡写.

有人可以澄清这里发生了什么吗?谢谢.

javascript dom domparser

6
推荐指数
2
解决办法
891
查看次数

ParseFromString 在 IE 中引发错误,但在 Chrome 中不会

我正在为传单使用 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

javascript internet-explorer google-chrome domparser

6
推荐指数
1
解决办法
4671
查看次数

Javascript:在移动设备上使用DOMParser(iOS 7.*)

我在我的项目中使用角度.但没关系)

我必须使用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似乎它引起了错误...

javascript mobile-safari domparser ios angularjs

6
推荐指数
1
解决办法
636
查看次数

用于大型 html 的 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 javascript xml dom domparser

6
推荐指数
2
解决办法
539
查看次数

如何将 HTML 解析为 DOM 树,同时考虑其原始位置?

我正在编写一个用户脚本,该脚本在我想要解析为 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属性的访问,这似乎太重量级,无法轻松地适合用户脚本
  • 包括用户层 HTML 解析器和 DOM 实现,这又显得太繁琐

我还意识到从 Unicode 文本中解析 HTML.text()将绕过 HTML 编码检测算法。我自己可以忍受这一点,因为我感兴趣的网站专门使用标头中正确表示的 UTF-8,但这也是一个应该注意的缺陷。理想情况下,HTML 文档应该直接从 …

html javascript domparser

6
推荐指数
1
解决办法
417
查看次数