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

目录
相关文章
|
3天前
uni-app 4.13开发弹出层组件(二)弹出关闭功能
uni-app 4.13开发弹出层组件(二)弹出关闭功能
12 0
|
3天前
uni-app 4.5开发聊天列表组件(一)
uni-app 4.5开发聊天列表组件(一)
11 0
|
2月前
|
安全 数据安全/隐私保护 iOS开发
【iOS开发】iOS App的加固保护原理:使用ipaguard混淆加固
【iOS开发】iOS App的加固保护原理:使用ipaguard混淆加固
32 0
|
3月前
|
XML Java 开发工具
jdom操作xml实战
jdom操作xml实战
|
2月前
|
Android开发 开发者 iOS开发
APP开发后如何上架,上架Android应用市场前要准备什么
移动应用程序(APP)的开发已经成为现代企业和开发者的常见实践。然而,开发一个成功的APP只是第一步,将其上架到应用商店让用户下载和使用是实现其潜力的关键一步。
|
2月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
42 1
|
3天前
uni-app 4.12开发弹出层组件(一)基础架构
uni-app 4.12开发弹出层组件(一)基础架构
12 0
|
3天前
|
JavaScript
uni-app 4.6开发聊天列表组件(二)
uni-app 4.6开发聊天列表组件(二)
9 0
|
2月前
|
iOS开发
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
23 1
|
2月前
|
人工智能 前端开发 JavaScript
APP开发毕业设计|ssm爱心小屋公益机构智慧管理APP(二)
APP开发毕业设计|ssm爱心小屋公益机构智慧管理APP
APP开发毕业设计|ssm爱心小屋公益机构智慧管理APP(二)

相关产品

  • 云迁移中心