请问,XML命名空间如何定义
我看到不同的书,定义方法不一样
方法一:
<?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>
两种方法有什么区别吗?为什么不统一呢?
------解决方案--------------------
方法一:里面,Book本身是没有定义名称空间的,只是它的子节点才有的
方法二:里面,Book是有名称空间的,
代表的含义不同。如果使用xpath查节点,写法是不同的,
方法一的xpath写法
/Book/lib:Title
方法二的xpath写法
/lib:Book/lib:Title
所以,上面2段xml代码的写法含义是完全不同的
------解决方案--------------------
通过下面的例子可以清楚地看到差别
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);
------解决方案--------------------孟老师讲的很清楚
------解决方案--------------------这个我也不知道,跟踪学习下