如何避免krpano的语法错误

不愿意见到的黑屏

刚接触krpano的朋友,最初目的很可能是想在手机上观看全景,krpano的两套viewer,Flash和HTML5正好满足了跨平台的需求,而且同一个地址就能在电脑和手机观看,于是我们的朋友很开心在电脑上看到了出色的全景效果,但当在手机上打开地址时,却弹出下面这个黑色画面,什么意思?FATAL ERROR,致命错误,载入或解析失败

image 20140627133335156
 
为啥?明明电脑能看,到了手机就致命了呢!这是因为krpano在电脑上可能是根据你的设定使用了Flash的内核,而在手机则使用HTML5的内核,HTML5对xml的语法检查比Flash对xml的语法更为严格,在Flash上忽略的错误在HTML5面前一个都不会放过。
 

找到黑屏的原因

那遇到这种情况怎么办呢?直接把xml文件拖到你的pc浏览器,例如拖到遨游,这时候浏览器出现以下信息。

This page contains the following errors:

error on line 30 at column 44: Attribute name redefined
Below is a rendering of the page up to the first error.


我们只需要知道这是第30行的错误,而且是Attribute name redefined的错误,这个什么意思?暂且不提。我们打开xml文件,看看第30行是什么。

认真阅读代码,可以看到有两处对name的定义,也就是重复定义了,这也是Attribute name redefined的意思,这时候只需要删掉其中一个name=“skin_logo” 就可以了,这时候我们再把xml文件在浏览器刷新一次,发现错误信息没有了,看到的是完整的xml代码。

 
下面我列举一些常见的xml语法错误。
 
首先还是接着刚才的属性重复定义,例如下面这种
还有这种

plugin[test].menu可以说是 testmenu 也可以是 true,这也是不允许的。

 

This page contains the following errors: error on line 26 at column 1: error parsing attribute name Below is a rendering of the page up to the first error.

 

这个有可能是相关的标签没有闭合,也就是不符合下述的写法

或者


尤其是当layer标签出现问题时,会出现以下错误

This page contains the following errors:

error on line 244 at column 10: Opening and ending tag mismatch: layer line 0 and krpano
Below is a rendering of the page up to the first error.


这时候就找找是不是那一层layer没有闭合好。

 
注释部分也是容易出错,要符合以下写法:
 

还有没有空格,例如

正确的写法应该是


xml语言还规定了一些字符是不能随便用的,它们有对应的替位符,

& – &
< – &lt;
> –  &gt;
” – &quot;
‘ – &#39;

当然像分号;  还有逗号,  也是容易出错的地方。
 
只要我们按照上述方法排查,直到出现完整的xml文件,那基本上你的代码就不存在语法问题了。
详细语法错误说明,请看 krpano语法错误检查

在 “如何避免krpano的语法错误” 上有 1 条评论

发表评论