谁能介绍下 XML 的 namespace 是什么鬼~

2015-11-18 00:01:14 +08:00
 Juggernaut
看了这个文章( http://www.w3school.com.cn/xml/xml_namespaces.asp ),觉得还是不太清楚。
譬如如下的 XML ( XML Namespace (xmlns) 属性):
<f:table xmlns:f="http://www.w3school.com.cn/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
跟这个比较(默认的命名空间( Default Namespaces )):
<table xmlns="http://www.w3school.com.cn/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
二者有啥区别吗?
现在手头有个 web app ,原本期待的输出是第二种格式的 xml 内容,但是现在一直输出第一种格式的 xml 内容,而且更奇特的是,不管在什么环境测试,甚至换服务器, namespace-prefix 这个字符串内容都丝毫不变。

求专家指点~
2238 次点击
所在节点    程序员
4 条回复
feuvan
2015-11-18 00:26:22 +08:00
不要看 w3school *3

前后两种输出是等价的,对于能处理 xml 的库是一样的,人肉去读也一样。你在序列化的时候把 "http://www.w3school.com.cn/furniture" 设为默认的 namespace ,且 不要加 f 作为 prefix name 。在代码里找找。
至于 namespace 是啥,你学过 C++的话就理解为那个 namespace 就好了
A namespace 下的老王和 B namespace 下的老王不是同一个老王。
至于 XML 为什么会引入 namespace ,据信是为了解决 element/attribute name 相同但实际标识不同又不想用 prefix postfix 这种丑陋的解决方案,同时也可以分离不同域的数据。
一般来说也建议 xml doc 有个默认的 namespace 。

要严谨的技术回答请看链接
1.为什么有 namespace http://www.w3.org/TR/REC-xml-names/#sec-intro
2.一些复杂点的例子 http://www.xmlmaster.org/en/article/d01/c10/
3.较为知名的 namespace http://www.informit.com/articles/article.aspx?p=31837&seqNum=10
yyfearth
2015-11-18 03:22:26 +08:00
如果只有一个 namespace 就没区别了 除非解析器不标准不支持 namespace
但是 namespace 从来都是为了解决同名冲突用的
所以当你遇到多个 namespace 的时候 就很必要了
当然 用的最多的那个 namespace 作为 default namespace 对人的可读性好很多 大小也会小一些
应该是你在 xml 处理里面要做一些配置 看看你用的 lib 的文档吧
hqs123
2015-11-18 10:02:30 +08:00
命名空间而已没什么的...
kaedea
2015-11-18 11:16:07 +08:00
类似于包路径吧……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX