加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 08:20:56 所属栏目:百科 来源:网络整理
导读:使用C#读取xml文件有三种常用的方式: 1、xmlDocument 2、XmlTextReader 3、Linq To Xml 但是这些方式在读写有些带命名空间的xml时就不知道怎么办了(例如把xaml文件当作xml文件来读写的时候)。 对于xaml文件,C#虽然能用XamlReader直接把xaml文件转换为对象
使用C#读取xml文件有三种常用的方式:
1、xmlDocument
2、XmlTextReader
3、Linq To Xml
但是这些方式在读写有些带命名空间的xml时就不知道怎么办了(例如把xaml文件当作xml文件来读写的时候)。
对于xaml文件,C#虽然能用XamlReader直接把xaml文件转换为对象,但是有的时候我们只是想取得其中一些字段,并不想转换为对象。
本文就以读取xml方式来读写xaml,给大家做一个示范。

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

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

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


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读