.NET : 再谈谈XML中的命名空间问题

本文介绍在编程中如何处理XML文件中的命名空间问题,包括创建带有命名空间的XML元素及读取这些元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我之前有专门的文章讨论过在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();

image

 

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

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


http://www.xizhang.com" xmlns:k=" http://www.microsoft.com">
  Sample1
  Sample2

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

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);

image

本文由作者: 陈希章 于 2009/8/6 9:45:51 发布在: 博客园,转载请注明出处
本文是使用 博客同步和管理系统自动于2009/8/6 9:45:56 从 博客园 同步过来的。原文地址: http://www.cnblogs.com/chenxizhang/archive/2009/08/06/1540081.html ,发表于2009/8/6 1:46:00.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值