我从 Lightroom 导出了一个 Flash Web 画廊。它使用 XML 文件来显示每张照片的标题。我想要的只是从这个 XML 文件中提取描述标签,以便我可以将其发送给校对者。我一直在尝试使用 javascript 来执行此操作,但它不起作用。我拥有的代码能够为我提供所有描述的部分列表。我的代码遍历描述标签,但一旦遇到空标签:它(使用 Chrome 调试器)会抛出 Uncaught TypeError: Cannot read property 'data' of null 并停止执行。 我尝试检查“null !==”,但我猜测代码仍在运行,因为我仍然收到错误。
到目前为止,我确信 XML 是邪恶的。
XML 文件示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mediaGroup>
<amgVersion version="1.3" />
<groupInfo>
<bunch of="data I don't care about" />
</groupInfo>
<sizes>
<bunch of="data I don't care about" />
</sizes>
<media totalGallerySize="104">
<item>
<title></title>
<description>Yo! Look at that monkey on the bars</description>
<imageID />
<mediaType/>
<renditions>
<rendition size="large" />
<rendition size="medium" />
<rendition size="small" />
<rendition size="thumb" />
</renditions>
</item>
<item>
<title></title>
<description>It's trying to parse XML files ahhaha</description>
<imageID />
<mediaType/>
<renditions>
<rendition size="large" />
<rendition size="medium" />
<rendition size="small" />
<rendition size="thumb" />
</renditions>
</item>
<item>
<title></title>
<description></description>
<imageID />
<mediaType/>
<renditions>
<rendition size="large" />
<rendition size="medium" />
<rendition size="small" />
<rendition size="thumb" />
</renditions>
</item>
<item>
<title></title>
<description>That missing description is going to make him angry</description>
<imageID />
<mediaType/>
<renditions>
<rendition size="large" />
<rendition size="medium" />
<rendition size="small" />
<rendition size="thumb" />
</renditions>
</item>
</mediaGroup>
对于我的代码,我有以下内容:
<script type="text/javascript">
function loadXMLDoc(dname) {
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
} //end function
xmlDoc=loadXMLDoc("group.xml");
var z=xmlDoc.getElementsByTagName("item"), nameELEM;
document.write(z.length);
for (i=0;i<=z.length;i++){
nameELEM=z[i].getElementsByTagName("description")[0];
if (typeof nameELEM.firstChild.data !== "undefined") { //This is the line the error quotes
//handle property xxx of documentFragment as required
document.write(nameELEM.firstChild.data + "<br />");
}
}
</script>
第 38 行:未捕获类型错误:无法读取 null 的属性“数据” 第 38 行 = if (typeof nameELEM.firstChild.data !== "undefined") {
最佳答案
而不是:
if (nameELEM.firstChild.data !== null)
尝试:
if (typeof nameELEM.firstChild.data !== "未定义"
)
关于Javascript - 无法从嵌套 XML 文件获取数据 - 无法读取 null 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795536/