gpt4 book ai didi

javascript - 需要通过 JavaScript 解析 XML 数据的帮助

转载 作者:行者123 更新时间:2023-11-28 10:03:46 25 4
gpt4 key购买 nike

我正在尝试用 JavaScript 制作一个可移植应用程序,从 XML 文件中提取数据并将其显示在数据网格中。该数据有一些字段肯定会包含一些数据,而有些字段可能包含也可能不包含数据。第二个字段是作者,我的数据可以包含 1 到 9 位作者。所有这些数据都在 Excel 文件中,我将其转换为 xml,它显然不包含像 <author2> 这样的标签。 , <author3>等等,如果他们没有记录的话。

首先,在通过 JavaScript 解析数据时,我必须保留以下内容:

document.createTextNode(x[i].getElementsByTagName("author3")[0].childNodes[0].nodeValue);

...在 try-catch block 中,因为我找不到任何替代方案。简单地用“if”检查标签是否存在是行不通的。我认为这种方法效率不是很高。

其次,对于作者字段,我想在表中的每一行中添加与记录中作者数量一样多的行。为此我尝试添加 \n在作者之间并从中创建一个文本节点,但这没有帮助。

最佳答案

正如之前所说,如果您发布一些代码和 XML 示例,将会有所帮助。

话虽如此,这里有一些可能(或可能不会)对您有帮助的提示。

您说“仅使用 if 检查标签是否存在是行不通的”。我假设你的意思是做这样的事情:

if (x[i].getElementsByTagName("author3")[0]) { /* [...] */ }

...给了你一个TypeError .

原因很简单。如果<author3>不存在,getElementsByTagName将返回一个空集合。正因为如此,x[i].getElementsByTagName("author3")[0]永远是undefined .

您可以通过多种方式解决此问题。其中一种方法是使用 try/catch ,这是一个完全有效的解决方案。另一种方法是检查集合的长度,如下所示:

var author3 = x[i].getElementsByTagName("author3");
var author3_name;
var author3_node;

if (author3.length > 0) {
author3_name = author3[0].childNodes[0].nodeValue;
author3_node = document.createTextNode(author3_name);
// Do something with author3_node
}

请注意,这仍然会抛出 TypeError例如,如果 <author3>标签原来没有任何 child ......

至于你的第二个问题:在 HTML 中,任何不需要的空格都会被忽略。这包括换行符 ( \n )。要在 HTML 中插入换行符,您必须添加 <br /> :

document.createElement('br');

关于javascript - 需要通过 JavaScript 解析 XML 数据的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8666063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com