如何更新解析的 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】:

如果nodeValuenull,则设置其值无效(来自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 值的主要内容,如果未能解决你的问题,请参考以下文章

使用 TinyXML 解析 XML 元素

如何在sencha中解析xml文件并获取标签值

如何解析 XML 文件并使用找到的值创建对象?

如何在 SQL Server 2005 中插入值数组?

如何在已解析的 XML 标记值上检查 Null

如何使用 Boost ptree C++ 解析其值中包含 HTML 标记的 XML