如何将.xml文件中的注释内容输出到我的文本区域?
我的.html:
<textarea name="comment" id="comment" rows="3"/>
我的.xml:
<div>
<ab type="transcription"><!--This is a comment--></ab>
</div>
我的.js:
$.ajax({
type: "GET",
url: "../data/cards/1799.xml",
dataType: "xml",
cache: false,
success: function (xml) {
[...]
var mycomment = $(xml).find("ab").attr("type", "transcription");
$("comment").val(mycomment)
.text()不输出任何内容。预先感谢您对正确方向的任何提示!
答案 0 :(得分:3)
您的HTML元素是<textarea>
,而不是<comment>
,因此$('comment').val
不起作用。另外,要获取评论文字,您应该使用
$(xml).find('ab').text()
仅-使用.attr
设置或获取您不需要关心的节点属性。因此,尝试:
const text = $(xml).find('ab').text();
$("#comment").val(text);
前面的#
表示您要查找具有 id 的元素。 (不带任何符号,表示您要查找具有标记名称的元素。)
在XML中,如果要标识类型为ab
的{{1}},则可以使用查询字符串:
transcription
另一个问题是ab[type="transcription"]
(或text
)无法识别注释节点-但是,如果textContent
的内容仅是该注释,则可以使用{ {1}}或<ab>
进行检索。
还请注意,不需要为此而包含像jQuery这样的大库-您可以使用原始Javascript轻松实现它:
.html
演示:
.innerHTML
fetch(<url>)
.then(res => res.text())
.then((text) => {
const doc = new DOMParser().parseFromString(text, 'text/html');
const text = doc.querySelector('ab').innerHTML;
document.querySelector('#comment').value = text;
});
要访问注释节点的内容,可以使用const responseText = `<div>
<ab type="transcription"><!` + `--This is a comment--></ab>
</div>`;
const doc = new DOMParser().parseFromString(responseText, 'text/html');
const text = doc.querySelector('ab').innerHTML;
document.querySelector('#comment').value = text;
导航到该节点,然后获取其<textarea id="comment"></textarea>
:
childNodes[0]
textContent