【发布时间】:2012-12-04 14:09:18
【问题描述】:
我有一个 js 函数,它试图设置 XMLDoc 对象并设置全局参数之一(modelingDiagram)。
在尝试通过标签名称获取元素时,它总是返回空列表(但不是在 Firefox 中)。 在调试期间,我知道它正在为我在观察区域尝试的任何标签返回空列表 - xmlDoc.getElementsByTagName('进程');或 xmlDoc.getElementsByTagName("desc");
下面是js函数。注释区域表明我在哪里得到了异常。
function setXmlDoc(text)
{
if (window.ActiveXObject){
var doc=new ActiveXObject('Microsoft.XMLDOM');
doc.async='false';
doc.loadXML(text);
} else {
var parser=new DOMParser();
var doc=parser.parseFromString(text,'text/xml');
}
xmlDoc = doc;
modelingDiagram = xmlDoc.getElementsByTagName('Processes')[0].getElementsByTagName('ModelingDiagram');
//Uncaught TypeError: Cannot call method 'getElementsByTagName' of undefined
}
文本变量包含字符串格式的xml-
<?xml version="1.0" encoding="utf-8"?>
<Processes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="">
<Process>
<desc value="Z45 Accounting">Z45 Accounting</desc>
<height value="541">541</height>
<width value="411">411</width>
<xval value="50">50</xval>
<yval value="50">50</yval>
<Flowelements>
....
....
....
我无法弄清楚 Chrome 期望在这里获得正确列表的内容是什么?
【问题讨论】:
-
考虑JQuery,它有很好的跨浏览器支持
-
ModelingDiagram在您的代码中的什么位置? -
modelingDiagram 是另一个全局变量,定义时用 null 初始化。
-
@LeviBotelho:如果您在 getElementsByTagName 中询问 ModelingDiagram,那么它是
的子节点之一(在附加的 xml 中没有显示)
标签: javascript