如何更新解析的 xml 值
Posted
技术标签:
【中文标题】如何更新解析的 xml 值【英文标题】:How to update a parsed xml value 【发布时间】:2019-09-13 03:06:36 【问题描述】:我正在将 XML 解析为对象并通过标记名访问节点,我遇到了一个问题,即我希望看到更新的值没有得到更新。警报向我显示了值并且它是正确的。但我需要将其显示在文档上,而事实并非如此。
var x = xml.responseXML;
var v1 = document.getElementById("sid");
alert(x.getElementsByTagName("ID")[0].childNodes[0].nodeValue);
v1.innerText = x.getElementsByTagName("ID")[0].childNodes[0].nodeValue;
我还有一个问题是如何允许编辑/突出显示节点?
【问题讨论】:
have a problem where the value I'd like to see updated doesn't get updated.
这是什么意思
@zero298 对,我犯了一个错误,改成 getElementById 还是一样的问题。
@srknzl 我已经制作了一个名为 sid 的 td 元素,它目前是空的,但我需要它至少显示第一个元素。我先做了解析,根据我解析的内容我需要 v1(sid) 来改变
v1.innerText = "foobar"
有效吗?对任何节点的任何更新都有效吗?
【参考方案1】:
如果nodeValue
是null
,则设置其值无效(来自the docs)。但是,您可以通过其他方式修改 XML 内容,例如.innerhtml
、.innerText
、.value
等。以.innerHTML
为例:
// creates a Document, as in XMLHttpRequest.responseXML
const docText = `
<!DOCTYPE html>
<body>
<div>Hello</div>
<div>World</div>
</body>`;
const doc = (new DOMParser()).parseFromString(docText, 'application/xml');
// setting nodeValue over null has no effect...
console.log(doc.getElementsByTagName('div')[0].nodeValue);
doc.getElementsByTagName('div')[0].nodeValue = 'Bye';
console.log(doc.getElementsByTagName('div')[0].nodeValue);
// ...but you can modifies the XML in different ways
console.log(doc.getElementsByTagName('div')[0].innerHTML);
doc.getElementsByTagName('div')[0].innerHTML = 'Bye';
console.log(doc.getElementsByTagName('div')[0].innerHTML);
【讨论】:
以上是关于如何更新解析的 xml 值的主要内容,如果未能解决你的问题,请参考以下文章