javascript - 通过 ajax 调用在 XML 文件中输出注释

标签 javascript jquery html ajax xml

如何将 .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);

# in front 表示您要查找具有该 id 的元素。 (如果没有任何符号,则表明您想要查找具有该标签名称的元素。)

在您的 XML 中,如果您想识别 ab其类型为transcription ,您将使用查询字符串:

ab[type="transcription"]

另一个问题是text (或 textContent )不识别注释节点 - 但是,如果 <ab>的内容只是该评论,那么您可以使用.html.innerHTML来检索它。

另请注意,不需要为此包含像 jQuery 这样的大型库 - 您可以在普通 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>

关于javascript - 通过 ajax 调用在 XML 文件中输出注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910226/

相关文章:

javascript - ajaxComplete 未被调用

javascript - 使用 "alert"和 "confirm"作为变量名

javascript - 可以从reactjs中的事件处理函数访问选项标签元素的键吗?

javascript - 如何将对全局变量的更改应用于函数内同名的其他变量?

javascript - 不同父页面的不同样式表

html - 选取框不显示所有文本

javascript - Web Worker 素数计算

jquery - 如何为多个元素设置脚本

html - 创建一个 2 列列表

javascript - 删除动态表单元素 jQuery