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,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1083 139
|
6月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
519 137
|
6月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
335 154
|
7月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
237 0
|
10月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
9月前
|
Rust 安全 前端开发
Github 轻松斩获30k+ Star,桌面应用开发太丝滑啦,Tauri框架能重塑桌面App开发?别错过,抓紧上车
Tauri 是一个基于 Rust 的开源框架,用于构建轻量级、高性能、安全的跨平台桌面及移动应用。它利用系统 WebView 渲染前端界面,后端由 Rust 编写,具备出色的性能和安全性。相比 Electron,Tauri 应用体积更小、启动更快,且默认权限更安全。它支持 React、Vue、Svelte 等主流前端框架,并提供自动更新、CLI 工具链、资源注入优化等功能,适用于生产力工具、开发者工具、数据分析、AI 应用等多种场景。目前 Tauri 在 GitHub 上已获得超过 30,000 Star,社区活跃,是现代桌面应用开发的理想选择。
1131 0
|
6月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1028 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
829 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
HarmonyOS NEXT仓颉开发语言实战案例:电影App
周末好!本文分享使用仓颉语言重构ArkTS实现的电影App案例,对比两者在UI布局、组件写法及语法差异。内容包括页面结构、列表分组、分类切换与电影展示等。通过代码演示仓颉在HarmonyOS开发中的应用。##仓颉##ArkTS##HarmonyOS开发