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

时间:2018-10-20 21:22:28

标签: 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()不输出任何内容。预先感谢您对正确方向的任何提示!

1 个答案:

答案 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