XML——c#读取带命名空间的xml

前端之家收集整理的这篇文章主要介绍了XML——c#读取带命名空间的xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用C#读取xml文件有三种常用的方式:
1、xmlDocument
2、XmlTextReader
3、Linq To Xml
但是这些方式在读写有些带命名空间的xml时就不知道怎么办了(例如把xaml文件当作xml文件来读写的时候)。
对于xaml文件,C#虽然能用XamlReader直接把xaml文件转换为对象,但是有的时候我们只是想取得其中一些字段,并不想转换为对象。
本文就以读取xml方式来读写xaml,给大家做一个示范。

其中xaml文件如下所示,文件名为test.xaml:

  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:sys="clr-namespace:System;assembly=mscorlib">
  4. <sys:String x:Key="testkey">testStringInnerText</sys:String>
  5. </ResourceDictionary>

1、读取xaml节点。
  1. XmlDocument xmlDoc = new XmlDocument();
  2. xmlDoc.Load("D:\\test.xaml");
  3. //添加命名空间,这一步一定要有,否则读取不了
  4. XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(xmlDoc.NaMetable);
  5. xmlNamespaceManager.AddNamespace("x","http://schemas.micorsoft.com/winfx/2006/xaml");
  6. xmlNamespaceManager.AddNamespace("sys","clr-namespace:System;assembly=mscorlib");
  7. XmlNodeList xmlNodeList = xmlDoc.DocumentElement.ChildNodes;
  8. foreach (XmlNode childXmlNode in xmlNodeList)
  9. {
  10. //读取数据节点(sys:String)
  11. string childName = childXmlNode.Name;
  12. //读取属性值(testKey)
  13. string childAttributesValue = childXmlNode.Attributes["x:Key"].Value;
  14. //读取节点文本(testStringInnerText)
  15. string childInnerText = childXmlNode.InnerText;
  16. //读取子节点
  17. XmlNodeList childXmlNodeList = childXmlNode.ChildNodes;
  18. }
  19.  

2、写入 xaml 节点
  1. var rootXmlDocument=new XmlDocument();
  2. XmlNode xmlNode=new XmlNode();
  3. //需要在这里生成一个xmlNode节点...
  4. //...
  5. //然后用appendchild方法插入
  6. rootXmlDocument.AppendChild(xmlNode);
  7. XmlElement rootXmlElement=(XmlElement)rootXmlDocument.ChildNodes[0];
  8. //设置命名空间
  9. rootXmlElement.SetAttribute("xmlns","http://schemas.microsoft.com/winfx/2006/xaml/presentation");
  10. rootXmlElement.SetAttribute("xmlns:x","http://schemas.microsoft.com/winfx/2006/xaml");
  11. rootXmlElement.SetAttribute("xmlns:sys","clr-namespace:System;assembly=mscorlib");
  12. rootXmlDocument.Save("D:\\test.xaml");
以上转载自:http://www.cnblogs.com/Leaco/p/3170729.html

猜你在找的XML相关文章