【问题标题】:getElementsByTagName stopping at triangle bracketgetElementsByTagName 在三角括号处停止
【发布时间】:2021-10-21 03:03:54
【问题描述】:

我在这种情况下使用getElementsByTagName

 TheTitle = xmlDoc.getElementsByTagName("ArticleTitle")[i].childNodes[0].nodeValue;

获取节点值但当文本中包含三角括号如:

<ArticleTitle>"The Cat Sat on The <i>Mat</i>"</ArticleTitle>

我只能找回来

The Cat Sat on The

如何防止节点文本中的三角括号过早结束文本捕获?

【问题讨论】:

  • 你能展示代码来证明你在做什么吗
  • 这是 html 页面的一部分(在 DOM 上)吗?是 xml 还是你在使用 JavaScript?
  • @AaronJ 访问存储在 js 变量中的 xml 文件

标签: javascript xml getelementsbytagname


【解决方案1】:

&lt;ArticleTitle&gt;"The Cat Sat on The &lt;i&gt;Mat&lt;/i&gt;"&lt;/ArticleTitle&gt; 有三个子节点

  1. 文本节点:The Cat Sat on The
  2. &lt;i&gt; 带有&lt;i&gt;Mat&lt;/i&gt; 的节点
  3. 文本节点"

所以,.childNodes[0].nodeValue; 当然就是The Cat Sat on The

要修复,请使用:

TheTitle = xmlDoc.getElementsByTagName("ArticleTitle")[i].textContent;

改为

let doc = `<xml><ArticleTitle>"The Cat Sat on The <i>Mat</i>"</ArticleTitle></xml>`;
let xmlDoc = new DOMParser().parseFromString(doc, 'text/xml');
let TheTitle = xmlDoc.getElementsByTagName("ArticleTitle")[0].textContent;
console.log(TheTitle);

【讨论】:

  • 不改变结果
  • 是的,我可以看到它适用于示例,但不适用于我的代码
  • 所以......我不知道i 是什么......也许你在你的真实代码 @haz中做了一些完全不同的事情
猜你喜欢
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多