javascript - 我似乎无法正确解析 JS 中的 XML 数据
问题描述
我有一个输入字段,其中包含以下文本:
<?xml version="1.0" encoding="utf-8"?>
<players timestamp="1536505850">
<player id="0518" name="Eagles, Philadelphia" position="Def" team="PHI" />
<player id="10271" name="Jones, Julio" position="WR" team="ATL" />
<player id="12154" name="Ajayi, Jay" position="RB" team="PHI" />
</players>
我有这些变量:
var outputField = document.getElementById('output');
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(document.getElementById('output'), "text/xml");
当我这样称呼时:
xmlDoc.getElementsByTagName("player")[0].childNodes[0].nodeValue;
我收到此错误:
未捕获的类型错误:无法在 1:41 读取未定义的属性“childNodes”
我究竟做错了什么?
解决方案
播放器元素没有子节点。您需要缩短产生错误的行
xmlDoc.getElementsByTagName("player")[0].childNodes[0].nodeValue;
到
xmlDoc.getElementsByTagName("player")[0].nodeValue;
不过,最好知道您要访问的内容,因为上面的语句将评估为null
:
var outputField = document.getElementById('output');
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(outputField.value, "text/xml");
console.log(xmlDoc.getElementsByTagName("player")[0].nodeValue);
<html>
<body>
<textarea id="output">
<?xml version="1.0" encoding="utf-8"?>
<players timestamp="1536505850">
<player id="0518" name="Eagles, Philadelphia" position="Def" team="PHI" />
<player id="10271" name="Jones, Julio" position="WR" team="ATL" />
<player id="12154" name="Ajayi, Jay" position="RB" team="PHI" />
</players>
</textarea>
</body>
</html>
更新:这是一个如何从“玩家”元素获取属性的示例:
var outputField = document.getElementById('output');
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(outputField.value, "text/xml");
console.log(xmlDoc.getElementsByTagName("player")[0].getAttribute('name'));
<html>
<body>
<textarea id="output">
<?xml version="1.0" encoding="utf-8"?>
<players timestamp="1536505850">
<player id="0518" name="Eagles, Philadelphia" position="Def" team="PHI" />
<player id="10271" name="Jones, Julio" position="WR" team="ATL" />
<player id="12154" name="Ajayi, Jay" position="RB" team="PHI" />
</players>
</textarea>
</body>
</html>
推荐阅读
- flutter - 如何在 Flutter 中实现带有水平可滚动标题的垂直滚动列表
- mongodb - 如何将“localhost”更改为mongodb连接字符串中的域名?
- reactjs - 反应应用程序中的删除按钮缺少第一次点击页面加载
- delphi - 没有指定单位范围名称的单位的搜索顺序
- java - Keycloak Java 客户端获取获取令牌
- c++ - 单例类析构函数无法在 MinGW 上清理 (SDL_Quit)
- exception - 使用本地缓存时的 Gemfire NoAvailableServerException
- nginx - nginx:哪个端口发送请求?
- python - Django模型的属性动态改变ImageField的默认值
- swift - 如何在 danielgindi / Charts 中设置值的字体大小?