我正在尝试从xml文件中读取文本并删除该文本所在的节点。
例如,我从<en>
或<es>
个节点读取文本,我需要删除这两个节点并将文本保存到<translation>
编辑前的xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<name>
<translation>
<en>
Text 1
</en>
<es>
Text 2
</es>
</translation>
</name>
</books>
所以看起来应该是这样的:
<books>
<translation>
Text 1
</translation>
</books>
这是我的功能的一部分,从<en>
读取文本之后我试图从<translation>
中删除所有子节点但是当我使用 removeChild 方法
var lang = 'en';
$.ajax({
type: "GET",
url: 'my.xml',
dataType: "xml",
success: function (xml) {
$(xml).find('translation').each(function () {
var text = $(this).find(lang).text();
});
$(xml).getElementsByTagName('translation').parentNode.removeChild();
// xml convert to json
var books = [];
var data = $.xml2json(xml)['#document'];
that.books = data.books;
}
});
我会感激任何帮助。谢谢!
答案 0 :(得分:1)
您遇到的问题是您尝试将jQuery对象用作DOM节点:
$(xml).getElementsByTagName('translation').parentNode.removeChild();
要使用jQuery,你可以
$(xml).find('translation').remove();
然而,我认为你可能会走错路。我发现您已宣布var text
未在代码中的任何位置使用过。{1}}您可能想要执行以下操作:
$xml = $(xml);
$xml.find('translation').each(function () {
$this = $(this);
$this.text($this.find(lang).text());
});
// do something with $xml...
我无法让xml2json
工作,因为我对这个插件并不熟悉,但它应该对你来说相对简单。
答案 1 :(得分:1)
var value = [];
$.get("your.xml", function(d){
values.push($(d).find("en")[0].childNodes[0]); //push "Text 1" into array
$(d).find("en").remove(); //remove node
$(d).find("es").remove(); //remove node
$(d).find("translation").append(values[0]); //add "Text 1" to node
});
答案 2 :(得分:0)
尝试过这个吗?
getElementsByTagName('translation').children().remove()