我之前有专门的文章讨论过在XML文件中的命名空间问题,事实上,这个命名空间的设计是XML规范中惹来争议最多的一个部分。其出发点是为了更好地标识元素,但事与愿违,它其实更多的时候是增加了麻烦。这方面的讨论很多,这里就不赘述了。

今天我还是用简单的例子再说说如何在编程中处理命名空间的问题

1. 如何在创建XML文档的时候加入命名空间

///创建一个带有默认命名空间的XML元素
///该命名空间不带前缀
Console.WriteLine("创建一个带有默认命名空间的XML元素");
XNamespace xn = "http://www.xizhang.com";
XElement root = new XElement(xn + "root",
    new XElement("Item", "Sample"));

Console.WriteLine(root);
Console.WriteLine();

Console.WriteLine("创建一个带有前缀的命名空间");
///创建一个带有前缀的命名空间
XElement root2 = new XElement(xn + "root",
    new XAttribute(XNamespace.Xmlns + "k", xn.NamespaceName),
    new XElement("Item", "Sample"));

Console.WriteLine(root2);
Console.WriteLine();

Console.WriteLine("创建一个带有前缀的命名空间,然后给元素也加上该空间");

///创建一个带有前缀的命名空间,然后给元素也加上该空间
XElement root3 = new XElement(xn + "root",
    new XAttribute(XNamespace.Xmlns + "k", xn.NamespaceName),
    new XElement(xn+"Item", "Sample"));

Console.WriteLine(root3);
Console.WriteLine();

2. 如何读取带有命名空间的元素

假设我们有如下一个范例XML数据文件,我们姑且将其命名为SampleData.xml

<?xml version="1.0" encoding="utf-8" ?>
<k:root xmlns="http://www.xizhang.com" xmlns:k="http://www.microsoft.com">
  <Item>Sample1</Item>
  <k:Item>Sample2</k:Item>
</k:root>

然后看看代码应该如何注意

string sampledata = "..\\..\\SampleData.xml";
XElement root = XElement.Load(sampledata);

XNamespace defaultns = "http://www.xizhang.com";
XNamespace k = "http://www.microsoft.com";

XElement item = root.Element(defaultns+"Item");//这是取得第一个元素,即便它没有前缀,也要添加一个默认的命名空间
Console.WriteLine(item);

XElement item2 = root.Element(k + "Item");
Console.WriteLine(item2);

本文由作者:陈希章 于 2009/8/6 9:45:51 发布在:博客园,转载请注明出处

.NET : 再谈谈XML中的命名空间问题相关推荐

  1. python文件作用域是什么_Python中的命名空间、作用域以及locals() 和 globals()

    最近一直看一本python经典教材--<Python学习手册>,因为之前都是突击学的,也没有仔细看一些经典教材,所以感觉自己的基础掌握的还不是很好,虽然网络上资源多,但我觉得还是有必要买本 ...

  2. XML配置文件的命名空间与Spring配置文件中的头

    一直以来,写Spring配置文件,都是把其他配置文件的头拷贝过来,最多改改版本号,也不清楚哪些是需要的,到底是干嘛的.今天整理一下,拒绝再无脑copy. 一.Spring配置文件常见的配置头 < ...

  3. python elementtree 命名空间_用Python中的命名空间通过‘ElementTree’解析XML

    莫回无 注对于Python的ElementTree标准库来说,这是一个有用的答案,而不需要使用硬编码的命名空间.要从XML数据中提取命名空间的前缀和URI,可以使用ElementTree.iterpa ...

  4. Spring的xml配置文件中tx命名空间

    Spring的xml配置文件中tx命名空间 一,spring配置文件的tx命名空间 引入tx命名空间 <?xml version="1.0" encoding="U ...

  5. XML中的DOCTYPE属性

    一.先来两个小例子 内部dtd将standalone设为真. <?xml version="1.0" standalone="yes"?> < ...

  6. [Android自定义控件]自定义属性attrs.xml中format

    前言 在我们自定义控件的时候,需要自己定义布局xml对象属性,就需要styles.xml自定义,然后再自定义java文件中获取信息,记录方便自己使用 使用 xml首先需要自定义命名空间: xmlns: ...

  7. XML 中的 xmlns 等属性的意义

    原文:https://blog.csdn.net/lengxiao1993/article/details/77914155 Maven 是一个 java 开发人员很难绕过的构建工具, 因为有众多的开 ...

  8. xml中xsd/xsi/xsl/xmlns的区别和联系

    (2023.01.13Fri才明白,具体解析xml文件的不是xml文件本身,xsi也不是在解析xml文件,只是检验xml文件是否符合标准,xsd是在限制xml文件的内容.而具体解析某个element究 ...

  9. Jsp在Web.xml中的配置

    以下列出web.xml经常使用的标签元素及这些标签元素的功能: 1.指定欢迎页面.比如: <welcome-file-list> <welcome-file-list> < ...

最新文章

  1. Spring学习总结(7)——applicationContext.xml 配置文详解
  2. 神了!7行代码建起360亿的支付帝国
  3. 单链表-在带头结点的单链表L中删除一个最小值结点(四指针)
  4. lamp rpm mysql_centos5.9使用RPM包搭建lamp平台
  5. 说说浏览器的沙箱机制
  6. JDK、Spring、Dubbo SPI 原理介绍
  7. java gettext用法_Java Context.getText方法代码示例
  8. 强制禁用gitlab的双因子认证:Two-Factor Authentication
  9. react元素显隐控制
  10. CAN总线技术 | 物理层04 - 终端电阻与双绞线(特性阻抗120欧)
  11. 服务器控件在客户端触发alert对话框后,根据情况进行回发服务器操作
  12. 《硝烟中的Scrum和XP》学习手札
  13. PHP初学者头疼问题总结
  14. 无人驾驶泊车?你要再多等等,百度Apollo和大众刚启动合作
  15. catkin_make 只编译一个包
  16. scala教程(一)
  17. LXM音频处理软件 使用说明书
  18. ffmpeg 合并音视频命令
  19. Scanvenger游戏制作笔记(九)Unity3D创建声音
  20. 1. VCS仿真原理——当我们谈论simv时,我们在谈论什么

热门文章

  1. 做好数据可视化的技巧和原则!
  2. Jupyter官方神器:可视化 Debug 工具!
  3. 4000字超干货!《统计学习方法》啃书指南(1)
  4. 【计算机视觉征稿】EI会议推荐|计算机多主题征稿,往届已被EI检索,ICCVDM 2021诚邀您投稿参会!...
  5. 南大周志华清华胡事民入围院士候选!计算机领域共计7人
  6. GPT-3数学不及格,愁坏伯克利团队,于是他们出了12500道数学作业
  7. 视觉Transformer最新综述
  8. 15 位学神争霸!2019 清华本科生特奖答辩入围名单公布
  9. URL化 替换空格
  10. 爬取--- https://www.exploit-db.com/ 下载POC较完善的代码【2】