gpt4 book ai didi

javascript - 无法使用javascript获取xml文件中标签的内容

转载 作者:行者123 更新时间:2023-11-28 08:51:37 24 4
gpt4 key购买 nike

我有一个 xml 文件channels.xml,其中包含类似的内容。

<StreamingChannelList xmlns:i="http://www.w3.org/2001/XMLSchema-instance">    
<StreamingChannel>
<Source xmlns:a="http://schemas.datacontract.org/2004/07">
<a:directUrl>
rtsp://10.232.15.90/PSIA/Streaming/Channels/F36AFF8A-79A0-4C80-BED7-4EF795B4EDB0
</a:directUrl>
</Source>
</StreamingChannel>
</StreamingChannelList>

我需要获取 a:directUrl 标签的内容,并且我编写了以下 javascript,但无法获取标签内容。有人可以告诉我代码中有什么问题吗(特别是最后 4 行)?仅供引用:在 Windows 上使用 Safari 浏览器

<script>
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","channels.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

var StreamingChannel=xmlDoc.getElementsByTagName("StreamingChannel");
var Source=StreamingChannel[0].getElementsByTagName("Source");
var directUrl=Source[0].getElementsByTagName("a:directUrl");
document.write("<td>"+directUrl[0].childNodes[0].nodeValue+"</td>");
</script>

最佳答案

Safari 对前缀元素名称 a:directUrl 存在问题。

您需要的是 getElementsByTagName 的特殊前缀版本,即 getElementsByTagNameNS,它的第一个参数是命名空间的 URI。
请参阅https://developer.mozilla.org/en-US/docs/Web/API/element.getElementsByTagNameNS

所以调用必须是

var directUrl = Source[0].getElementsByTagNameNS("http://schemas.datacontract.org/2004/07", "directUrl");

然后它就可以工作了,至少在 Safari 和 Firefox 中是这样。
现在的问题是我无法在 IE 中进行测试,因为 IE 拒绝执行 HTTP 请求,但有传言说 IE 不知道 getElementsByTagNameNS。因此你需要类似的东西

var directUrl;
if (document.getElementsByTagNameNS)
directUrl = Source[0].getElementsByTagNameNS("http://schemas.datacontract.org/2004/07", "directUrl");
else
directUrl = Source[0].getElementsByTagName("a:directUrl");

但不确定这是否有效;这可能需要一些工作。就像我说的,我无法让 IE 在这里工作。

关于javascript - 无法使用javascript获取xml文件中标签的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075842/

24 4 0