标签: domparser

在android中使用dom解析器获取值列表

我必须开发一个Android应用程序.

这里我遵循以下xml格式.

<Product>
<product name="viki" productid="111">
<ProductType>
<producttype>Nokia</producttype>
<producttype>Samsung</producttype>
</ProductType>
</product>
</Product>
Run Code Online (Sandbox Code Playgroud)

在这里,我必须获得particluar product的产品类型.所以我写了以下代码:

    if(subCategoryChildNode.hasChildNodes()){
            // parse 'Subcategory' childs
        NodeList productNL = subCategoryChildElmt.getElementsByTagName("product");
        if(productNL.getLength() > 0){

        ArrayList<Product> productAL = new ArrayList<Product>();
        Product productBean = null;
        for(int pCnt=0;pCnt<productNL.getLength();pCnt++){
            Node productNode = productNL.item(pCnt);

            Element productElmt = null;
            // parse 'product' tag attributes 
            if(productNode.hasAttributes()){
                productBean = new Product();
                productElmt = (Element)productNode;
                productBean.setmProductName(productElmt.getAttribute("name"));
            }
            if(productNode.hasChildNodes()){
                NodeList productTypeNL = productElmt.getElementsByTagName("ProductType");
                if(productTypeNL.getLength() > 0){
                    ArrayList<ProductType> ProductTypeAL = new ArrayList<ProductType>();
                    ProductType productTypeBean = null;
                    for(int ptCnt=0;ptCnt<productTypeNL.getLength();ptCnt++){
                    Node …
Run Code Online (Sandbox Code Playgroud)

java android xml-parsing domparser

5
推荐指数
1
解决办法
1025
查看次数

org.xml.sax.SAXParseException:过早结束文件

我目前有以下XML文件。

http://www.cse.unsw.edu.au/~cs9321/14s1/assignments/musicDb.xml

我的XMLParser.java课。

package edu.unsw.comp9321.assignment1;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;

public class XMLParser {


public void search () {

    try{
        File fXmlFile = new File("/COMP9321Assignment1/xml/musicDb.xml");           
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);

        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

    } catch (Exception e) {
        e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)

}

我在另一个类中创建一个对象并调用search但我不断收到上述错误。

有人知道可能是什么问题吗?

感谢您的帮助。

java xml domparser

5
推荐指数
1
解决办法
4万
查看次数

节点+ xmldom:如何更改JavaScript中单个XML字段的值?

使用节点 v.0.10.29,Express v4.12.0和xmldom v0.1.19,我正在尝试执行以下操作:

脚步

  1. XML文件入字符串
  2. 使用xmldom 将字符串转换为XML对象
  3. <name>default</name>字段设置为<name>test</name>
  4. 将XML对象转换回字符串

问题

问题在于,设置<name>字段后,它在对象中的设置正确,但是当我将其转换为字符串时,该<name>字段又恢复为旧值(错误)。

代码如下所示:

var fs = require('fs');
var DOMParser = require('xmldom').DOMParser;
var XMLSerializer = require('xmldom').XMLSerializer;
var filename = "myFile.xml";

fs.readFile(filename, "utf-8", function (err,data) 
{
    //CREATE/PARSE XML OBJECT FROM STRING
    var customerConfig = new DOMParser().parseFromString(data);

    //SET VALUE TO "TEST" (<name>default</name> TO <name>test</name>)
    customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue = "test";

    //THIS OUTPUTS "test" WHICH IS CORRECT - 
    console.log(customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue);

    //SERIALIZE …
Run Code Online (Sandbox Code Playgroud)

javascript xml-serialization node.js xml-parsing domparser

5
推荐指数
1
解决办法
3711
查看次数

DOMParser Typescript-解析HTML

我在使用DOMParser时遇到了一些麻烦。我正在使用intelliJ IDE并用Typescript编写。

这是我的代码:

  public domparser = new DOMParser();
  this.domdoc = this.domparser.parseFromString(this.xmlDoc, 'text/xml');
  console.log("domdoc: " + this.domdoc);
Run Code Online (Sandbox Code Playgroud)

domdoc: [object XMLDocument]在控制台中看到 。

关于如何打印XML文档而不只是“ [object XMLDocument]”的任何建议?

谢谢。

intellij-idea domparser typescript angular

5
推荐指数
1
解决办法
4527
查看次数

PHP DOM 解析器移动关闭 Div 标签

这是我的代码:

$myHtml = '
<div class="div-class">
    <p>text</p>

    <p><a href="#">text</a></p>
</div>

<ul class="some-class">
    <li><a href="#" target="_blank" title="something something"><img src="" alt=""></a>
    </li>
    <li><a href="" target="_blank" title=""><img src="" alt=""></a>
    </li>
    <li><a href="" target="_blank" title=""><img src=""></a>
    </li>
</ul>
';

$doc = new \DOMDocument();
$doc->loadHTML($myHtml, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new \DOMXPath($doc);
$anchors = $xpath->query("//a[@title='something something']");
$list = $xpath->query("//ul[@class='some-class']")[0];
foreach ($anchors as $a) {
    $list->removeChild($a->parentNode);
}

var_dump($doc->saveHTML());
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我试图删除一个包含标题为“某物”的锚标记的列表项。但是,当我在应用更改后保存 html 时,列表会在 div 标签内移动。为什么会出现这种情况?谢谢。

html php string domparser

5
推荐指数
1
解决办法
233
查看次数

共享 NodeJS 和浏览器库?DOMParser =&gt; dom-parser 和 createNodeIterator =&gt; dom-node-iterator

现在我已经意识到执行类似的函数

let parser = new DOMParser();
Run Code Online (Sandbox Code Playgroud)

仅当使用浏览器执行时才有效,而不能使用 Express/Node 这样的服务器执行,那么有哪些选项呢?

我读过很多关于 NodeJS 替代 DOMParser 的文章,但还有一些库

https://www.npmjs.com/package/dom-parser

https://www.npmjs.com/package/dom-node-iterator

这些是有效的替代方案吗?我是否安装它们并根据使用它们的是浏览器还是 Node 来调整方法调用?

我问这个问题是因为在 Node.js 上查看像Node.js 上的 HTML 解析器这样的帖子,它看起来并不那么简单

node.js domparser express reactjs

5
推荐指数
0
解决办法
521
查看次数

将 HTML 字符串解析为 DOM 并将其转换回字符串

我有一个HTML string例如'<p><span class="text">Hello World!</span></p>'

我将其解析HTML stringDOMusing DOMParser().parseFromString(),因为我想更改innerHTML某些特定elements. 这就是为什么我parseHTML stringDOMgetElementByClassName我通过他们让我的所有元素,并循环改变它innerHTML。到目前为止,这有效。

更改后innerHTML,我尝试将新的转换DOMstring. 我无法弄清楚如何。我尝试的是将innerHTMLouterHTML(都尝试过)分配给这样的变量:

const parser = new DOMParser();
const doc = parser.parseFromString("<p>Hello World!</p>", "text/html");
console.log(doc.innerHTML) // undefined
console.log(doc.outerHTML) // undefined
Run Code Online (Sandbox Code Playgroud)

const parser = new DOMParser();
const doc = parser.parseFromString("<p>Hello World!</p>", "text/html");
console.log(doc.innerHTML) // undefined
console.log(doc.outerHTML) // undefined
Run Code Online (Sandbox Code Playgroud)

我总是得到undefined。我怎样才能将它解析回 …

html javascript string parsing domparser

5
推荐指数
1
解决办法
4944
查看次数

为什么 DOMParser 会改变空格?

为什么以下使用 DOMParser 会导致 HTML 与用作输入的 HTML 不同?它删除 DOCTYPE 和顶级元素之间的空格,删除文档元素 和 之间的空格head,并在 之前添加换行符</body>

我已经在 Google Chrome、Firefox 和 Safari 中对此进行了测试;我还使用JSoup运行了类似的代码,并得到了完全相同的结果。所以我很确定这不是一个错误。我目前的理论是,这是由某处规范中的某种深奥解析规则引起的。但可能还有其他我误解的事情。

const html = `<!DOCTYPE html>
<html>
  <head>
    <title>1</title>
  </head>
  <body>
    <div>
      Hello, World!
    </div>
  </body>
</html>`;

const setText = function(id,string) {
  document.getElementById(id).appendChild(document.createTextNode(string));
};

const documentToString = function(d) {
  return Array.prototype.slice.call(d.childNodes).map(function(node) {
    if (node.nodeType == node.ELEMENT_NODE) return node.outerHTML;
    if (node.nodeType == node.DOCUMENT_TYPE_NODE) return new XMLSerializer().serializeToString(node);
    throw new TypeError("" + node);
  }).join("");
};

setText("raw", html);
var parsed = …
Run Code Online (Sandbox Code Playgroud)

html javascript domparser

5
推荐指数
1
解决办法
1726
查看次数

使用 DOMParser 时 &lt;video&gt; 标签在 Safari 中不起作用

使用 时DOMParser<video>标签在 Safari 中不起作用,其预览会呈现,但没有控件且无法播放:

const parser = new DOMParser()
const parsed = parser.parseFromString(
  document.querySelector('video').outerHTML, 
  'text/html'
)
document.body.appendChild(parsed.querySelector('body').childNodes[0])
Run Code Online (Sandbox Code Playgroud)
<video
  width="250"
  controls
  playsinline
  src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4#t=0.001"
></video>
Run Code Online (Sandbox Code Playgroud)

上面的代码在 Chrome 中按预期工作:

在此输入图像描述

但 Safari 会呈现这个(macOS 和 iOS):

在此输入图像描述

没有控件,无法播放 DOMParser 生成的第二个视频。

这是某种安全功能还是错误?这种行为有什么解决方法吗?

javascript safari webkit html5-video domparser

5
推荐指数
1
解决办法
443
查看次数

未定义:调用 XSLTProcessor.prototype.importStylesheet 时出现未定义错误

我想美化一些 XML,我发现了以下代码(在这个答案中JSFiddle)。我这样修改:

const xsltDoc = new DOMParser().parseFromString([
    // describes how we want to modify the XML - indent everything
    '<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">',
    '  <xsl:output omit-xml-declaration="yes" indent="yes"/>',
    '    <xsl:template match="node()|@*">',
    '      <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>',
    '    </xsl:template>',
    '</xsl:stylesheet>',
].join('\n'), 'application/xml');
function prettifyXml(sourceXml) {
    var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');
    var xsltProcessor = new XSLTProcessor();
    // Error happens here:
    xsltProcessor.importStylesheet(xsltDoc);
    var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
    var resultXml = new XMLSerializer().serializeToString(resultDoc);
    return resultXml;
};
Run Code Online (Sandbox Code Playgroud)

运行代码时出现错误,但错误没有任何消息。在 Firefox 控制台中看起来像这样:

在此输入图像描述

这是我在调试器中看到的:

在此输入图像描述

该错误也确实发生在原始答案的小提琴中。我想知道这是什么类型的错误以及如何修复它。

我包含 Firefox 标签,因为我认为这不是正常的浏览器行为。我的版本是61.0.2(64位)。

javascript xslt firefox domparser

4
推荐指数
1
解决办法
932
查看次数