一个XML命名空间相关的问题
DOM4j就不介绍了,解析和生成XML文件都很方便。我遇到的问是这样的,博客需要以sitemap的方式向搜索引擎提交url数据,sitemap可以是txt或者xml等格式,这里我用的是xml格式。

看了一下sitemap文件相关说明,里面包含urlset根节点,url节点,lastmod节点,此外还有一些可选节点。结构简单,很快便处理完成了,但是后面Google提醒说sitemap文件中没有包含相应的命名空间,看到提醒之后我简单改了一下,我是这样弄得(部分代码):
Element root = document.addElement("urlset");
root.addAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");

因为xmlns位置和普通属性在一个位置,所以我想都没想就认为不就添加一个属性吗,完成之后测试了一下,什么玩意,没效果。。。我开始查找错误,以为是哪里写错了,查了两次试了两次,依旧无果。最后还是求助搜索引擎了。一查发现不少人也有这样的困惑,都想当然地这样弄了。问题不是什么大问题,最后按照网上的方法弄好了,并且补全了命名空间。如下:
Element root = document.addElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
root.addNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");
root.addAttribute("xsi:schemaLocation","http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");

总结下来出现这样的问题有两个三个主要原因:
(1)自己平时接触XML命名空间挺多,比如安卓开发中的布局等xml中都有涉及,也有涉及自定义命名空间,但是都是手写的。直接用代码生成的还是第一次;
(2)对于DOM4j的特殊操作还不熟;
(3)有时候做事太想当然了,这习惯得改。。。

当然,这样的问题遇到一次下次就知道怎么弄了,更重要的是其中暴露出的自身的除知识以外的一些问题。记录下此问题,以此告诫自己改掉一些坏习惯。另外,也给可能遇到此问题留个参考吧。
It's
欢迎访问本站,欢迎留言、分享、点赞。愿您阅读愉快!
*转载请注明出处,严禁非法转载。
https://www.devsong.org
QQ留言 邮箱留言
头像
引用:
取消回复
提交
涂鸦
涂鸦
热门