如何将.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(( 不输出任何内容。提前感谢您对正确方向的任何提示!
你的HTML元素是一个<textarea>
,而不是一个<comment>
,所以$('comment').val
不起作用。另外,要获取注释的文本,您应该使用
$(xml).find('ab').text()
仅 - 使用.attr
设置或获取节点的属性,您不关心。因此,请尝试:
const text = $(xml).find('ab').text();
$("#comment").val(text);
前面的#
表示您要查找具有该id的元素。(没有任何符号,表示要查找具有该标记名称的元素。
在 XML 中,如果要标识类型为transcription
的ab
,则应使用查询字符串:
ab[type="transcription"]
另一个问题是text
(或textContent
(不能识别注释节点 - 但是,如果<ab>
的内容只是该注释,那么您可以使用.html
或.innerHTML
来检索它。
另请注意,没有必要为此包含像jQuery这样的大型库 - 您可以在vanilla Javascript中轻松实现它:
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
:
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').childNodes[0].textContent;
document.querySelector('#comment').value = text;
<textarea id="comment"></textarea>