c#读取/保存 Xml文件

  •  XmlDocument读取

Xml文件:

<?xml version="1.0" encoding="utf-8"?>
<book>
  <title id="123" name="8888"> 嘿嘿嘿</title>
  <author>李白</author>
  <price>100</price>
</book>

读取方法:

 

            //using System.Xml;           
            XmlDocument doc = new XmlDocument();
            doc.Load(@"F:\a.xml");//XML文件路径
            XmlNodeList LiNode = doc.SelectNodes(@"/book/title");//要读取xml子目录路径
            foreach (XmlNode item in LiNode)
            {
                textBox3.Text = item.InnerXml;//获取指定xml子目录的值
                textBox1.Text = item.Attributes["id"].Value;//获取指定xml子目录属性是id的值
                textBox2.Text = item.Attributes["name"].Value;//获取指定xml子目录属性是name的值
            }
  • Linq读取 

 Xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<Data>
  <WeChat>
    <AccessToken>
      <value></value>
    </AccessToken>
    <ExpiresIn>
      <value>7200</value>
    </ExpiresIn>
    <Appid>
      <value>wxfabe9ea3ac8ec2c5</value>
    </Appid>
    <Secret>
      <value>1ce4a1b2c4254c798b977195c85b6504</value>
    </Secret>
  </WeChat>
</Data>
//Linq 查询
string _Path = System.Configuration.ConfigurationManager.AppSettings["WeChatXMLFilePath"].ToString();
_XElement = XElement.Load(_Path);
IEnumerable<XElement> elements = from ele in _XElement.Elements("WeChat")
                                             select ele;
List<WeChatModel> modelList = new List<WeChatModel>();
foreach (var ele in elements)
{
    WeChatModel model = new WeChatModel();
    model.access_token = ele.Element("AccessToken").Value;
    model.expires_in = Convert.ToInt32(ele.Element("ExpiresIn").Value);
    model.Appid = ele.Element("Appid").Value;
    model.Secret = ele.Element("Secret").Value;

    modelList.Add(model);
}
return modelList;
  •  XmlDocument保存

保存方法:

            //循环里改为赋值然后保存即可,其他不变
            foreach (XmlNode item in LiNode)
            {
               item.InnerXml = @" <aaa>test</aaa>";
                item.InnerText = @" <bbb>test2</bbb>";
            }
            doc.Save(@"F:\项目练习\a.xml");//保存到指定目录

注意:

在测试保存使用InnerXml与InnerText的时候:

    InnerXml保存后:XML文件未乱码,任意属性读取未乱码

    InnerText保存后:XML文件乱码,只能使用InnerText读取,否则读取还是乱码

PS:其实也不算是乱码,只是转成了标示而已(如果不是很明白试一下就明白了,并不复杂)

如:<title id="123" name="8888"> &lt;bbb&gt;test2&lt;/bbb&gt;</title>

  • Linq保存(XML中不能写备注)

IEnumerable<XElement> element = from ele in _XElement.Elements("WeChat")
                                            select ele;
            XElement first = element.First();
            ///设置新的属性
            if (!string.IsNullOrWhiteSpace(model.access_token))
            {                
                ((System.Xml.Linq.XElement)first.Element("AccessToken").FirstNode).Value= model.access_token;
            }
            if (!string.IsNullOrWhiteSpace(model.expires_in.ToString()))
            {
                ((System.Xml.Linq.XElement)first.Element("ExpiresIn").FirstNode).Value = model.expires_in.ToString();
            }
            if (!string.IsNullOrWhiteSpace(model.Appid))
            {
                ((System.Xml.Linq.XElement)first.Element("Appid").FirstNode).Value = model.Appid;
            }
            if (!string.IsNullOrWhiteSpace(model.Secret))
            {
                ((System.Xml.Linq.XElement)first.Element("Secret").FirstNode).Value = model.Secret;
            }
            _XElement.Save(_Path);

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值