Metro Style App开发快速入门 之XML文件读取,修改,保存等操作

简介:

Metro Style App 之XML文件读取,修改,保存等操作

采用Win RT的XML API操作XML文件。分别为加载xml文件,选择xml节点,修改xml节点的属性,最后保存xml文件。同样存在着很多异步操作(async,await)。

运行环境请参考上一篇:Metro Style App之文件访问操作示例

下图为Metro style app的API。

接下来就讲一下具体操作吧:

1、

StorageFile storageFile = null ;
  async void  Init()
  {
      //加载xml文件
      XmlDocument doc = await LoadXmlFile( @"Xml\xsltTransform" , "xmlcontent.xml" );
      //GetXml()获得Xml文本
      string  msg = doc.GetXml();
      //在RichEditBox显示文本
      myRichEditBox.Document.SetText(Windows.UI.Text.TextSetOptions.None, msg );
 
      var  xpath = "/library/book/chapter/section/paragraph/@a" ;
      //选择节点的值
      var  aAttributes = doc.SelectNodes(xpath);
      for  ( uint  i = 0; i < aAttributes.Length; i++)
      {
          //修改节点的属性
          aAttributes.Item(i).NodeValue = "newValue" ;
      }
      //保存文件,此时修改和保存文件的路径是系统的安装路径。
      doc.SaveToFileAsync(storageFile);
  }

 加载xml文件的操作为:

当前的路径为安装的本地路径,本示例为bin\debug\Filename\xmlfile

/// <summary>
/// Load Xml file
/// </summary>
private  async Task<XmlDocument> LoadXmlFile( string  folder, string  file)
{
     StorageFolder storageFolder = await Package.Current.InstalledLocation.GetFolderAsync(folder);
     storageFile = await  storageFolder.GetFileAsync(file);
     XmlLoadSettings loadSettings = new  XmlLoadSettings();
     loadSettings.ProhibitDtd = false ;
     loadSettings.ResolveExternals = false ;
     return  await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);
}

 注意: loadSettings.ProhibitDtd = false;   loadSettings.ResolveExternals = false; 安全设置都要成false,否则会有异常。 还有Win 8中文件访问已经发生了一些变化,使用StorageFolder等。

xml文件如下:

<library>
   <book>
     <chapter></chapter>
     <chapter>
       <section>
         <paragraph a= "b" >1</paragraph>
         <paragraph a= "b" >2</paragraph>
       </section>
     </chapter>
   </book>
</library>

 

修改后的xml文件:

<library>
   <book>
     <chapter></chapter>
     <chapter>
       <section>
         <paragraph a= "newValue" >1</paragraph>
         <paragraph a= "newValue" >2</paragraph>
       </section>
     </chapter>
   </book>
</library>

 

2、修改某个节点的值

var  xnodepath = "/library/book/chapter/section/paragraph" ;
var  nodeList = doc.SelectNodes(xnodepath);
 
for  ( uint  i = 0; i < nodeList.Length; i++)
{
       IXmlNode node = nodeList.Item(i);
       if  (node.Attributes[0].NodeValue.ToString() == "one" )
       {
              node.FirstChild.NodeValue = "New node Value" ;
       }
              
}

 上面是修改节点属性为one的节点值。

 

 总结:Win RT多xml的操作与原来的还是有一些区别的。

下面是我以前总结的XML操作,你会发现他们到底有哪些区别:

下文是对C#对XML的具体操作

如何完成.Net下XML文档的读写操作

C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍

C#中用SelectSingleNode方法解析带有多个命名空间的XML文件

 

以上只是自己的一点学习心得,如果有什么意见和建议,当然自己还在学习研究中。欢迎大家提出,共同学习,一起进步。

 

 

留个问题给大家:

当xml文件增加命名空间属性时('http://www.microsoft.com'),如何获得节点的信息;

xml文件如:

<library xmlns= 'http://www.microsoft.com' >
   <book>
     <chapter></chapter>
     <chapter>
       <section>
         <paragraph a= "one" >1</paragraph>
         <paragraph a= "two" >2</paragraph>
       </section>
     </chapter>
   </book>
</library>

如果用doc.SelectNodesNS方法,又该如何使用呢?

 答: 

doc.LoadXml(· "<urlset xmlns='http://www.foo.com'><url xmlns='http://www.bar.com'><loc>http://www.far.com</loc></url></urlset>" );
Windows.Foundation.Collections.PropertySet ns = new  Windows.Foundation.Collections.PropertySet();
ns.Add( "foo" , "http://www.foo.com" );
ns.Add( "bar" , "http://www.bar.com" );
node = doc.SelectSingleNodeNS( "/foo:urlset/bar:url/bar:loc" , ns);
 
或者
 
doc.LoadXml(· "<urlset xmlns='http://www.foo.com'><url xmlns='http://www.bar.com'><loc>http://www.far.com</loc></url></urlset>" );
node = doc.SelectSingleNodeNS( "/foo:urlset/bar:url/bar:loc" , "xmlns:foo='http://www.foo.com' xmlns:bar='http://www.bar.com'" );

 参考资料



本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/03/13/2392278.html,如需转载请自行联系原作者

目录
打赏
0
0
0
0
51
分享
相关文章
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
62 1
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
117 0
【Azure Logic App】在Logic App中使用 Transfer XML组件遇见错误 undefined
【Azure Logic App】在Logic App中使用 Transfer XML组件遇见错误 undefined
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
157 12
|
9月前
|
后端数据库开发高级之通过在xml文件中映射实现动态SQL
后端数据库开发高级之通过在xml文件中映射实现动态SQL
91 3
|
9月前
|
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
112 3
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
123 6
常见APP的操作
常见APP的操作
215 0

热门文章

最新文章

  • 1
    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
    6
  • 2
    Axure原型模板与元件库APP交互设计素材(附资料)
    42
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    14
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 5
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
    64
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    6
  • 7
    (ERP系统查看DWG)MxCAD APP调用内部弹框的方法
    44
  • 8
    仿第八区APP分发下载打包封装系统源码
    13
  • 9
    【Azure Function】Function App门户上的Test/Run返回错误:Failed to fetch
    4
  • 10
    2025同城线下陪玩APP开发/电竞游戏平台搭建游戏陪玩APP源码/语音APP开发
    14