请问,XML命名空间如何定义

dsfv23dsfc 2012-05-01 09:04:02
我看到不同的书,定义方法不一样

方法一:

<?xml version="1.0"?>
<Book xmlns:lib="http://www.library.com">
<lib:Title>刘德华</lib:Title>
<lib:Author>你好</lib:Author>
</Book>

方法二:

<?xml version="1.0"?>
<lib:Book xmlns:lib="http://www.library.com">
<lib:Title>刘德华</lib:Title>
<lib:Author>你好</lib:Author>
</lib:Book>


两种方法有什么区别吗?为什么不统一呢?






...全文
189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsfv23dsfc 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
方法一:里面,Book本身是没有定义名称空间的,只是它的子节点才有的
方法二:里面,Book是有名称空间的,

代表的含义不同。如果使用xpath查节点,写法是不同的,
方法一的xpath写法
/Book/lib:Title

方法二的xpath写法
/lib:Book/lib:Title


所以,上面2段xml代码的写法含义是完全不同的
[/Quote]
孟老师,问一下,命名空间的标示符是个URL,这个URL值,是随便写一个的吗?可不可以写成www.baidu.com
或者随便赋值一个字符串:“刘德华”
laokaizzz 2012-05-01
  • 打赏
  • 举报
回复
孟老师讲的很清楚
孟子E章 2012-05-01
  • 打赏
  • 举报
回复
通过下面的例子可以清楚地看到差别

String xmlfile1 = "d:\\1.xml";
String xmlfile2 = "d:\\2.xml";
XmlDocument doc1 = new XmlDocument();
doc1.Load(xmlfile1);
XmlNamespaceManager xnm1 = new XmlNamespaceManager(doc1.NameTable);
xnm1.AddNamespace("lib","http://www.library.com");
XmlNode title1 = doc1.SelectSingleNode("/Book/lib:Title",xnm1);
MessageBox.Show(title1.InnerText);

XmlDocument doc2 = new XmlDocument();
doc1.Load(xmlfile2);
XmlNamespaceManager xnm2 = new XmlNamespaceManager(doc1.NameTable);
xnm2.AddNamespace("lib", "http://www.library.com");
XmlNode title2 = doc1.SelectSingleNode("/lib:Book/lib:Title", xnm2);
MessageBox.Show(title2.InnerText);
孟子E章 2012-05-01
  • 打赏
  • 举报
回复
方法一:里面,Book本身是没有定义名称空间的,只是它的子节点才有的
方法二:里面,Book是有名称空间的,

代表的含义不同。如果使用xpath查节点,写法是不同的,
方法一的xpath写法
/Book/lib:Title

方法二的xpath写法
/lib:Book/lib:Title


所以,上面2段xml代码的写法含义是完全不同的
zhujiawei7 2012-05-01
  • 打赏
  • 举报
回复
这个我也不知道,跟踪学习下

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧