频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Upgrade Your INI Files to XML with .NET (2)

来源: 作者: 出处:巧巧读书 2006-09-29 进入讨论组

  Upgrade Your INI Files to XML with .NET (cont.)



The XML INI File Structure
The IniFileReader project sample code that accompanies this article reads standard INI files or XML-formatted INI files (see Table 1 for a complete list of methods and properties). The IniFileReader class constructor requires a file name. The class first tries to open the specified file as an XML file, using the XMLDocument.Load method. If that fails, the class assumes the file is in the INI format. It then creates a very simple default XML string and loads that, using the XMLDocument.LoadXML method, after which it opens the file in text mode and parses the lines of the file adding elements for the sections, items, and comments in the order they appear (see Listing 1). As an example, the sample INI file shown earlier looks like this after the IniFileReader finishes loading it.



   <?XML version="1.0" encoding="UTF-8"?>
   <sections>
     <comment> Company employees</comment>
     <section name="employee1">
       <item key="name" value="Bob Johnson" />
       <item key="department" value="Accounting" />
     </section>
     <section name="employee2">
       <item key="name" value="Susan Fielding" />
       <item key="department" value="Sales" />
     </section>
   </sections>

Getting the INI file contents into this simple XML structure makes it easy to mimic and extend the actions that you can perform with a standard INI file—and makes them easier to remember. The root element can contain any number of child <comment> or <section> elements, each of which can contain any number of <item> or <comment> elements.

One question you may have: Why doesn't the project use the standard API functions through DllImport as discussed in Use COM Interop to Read and Write to INI Files with .NET? The answer is that the standard API functions provide no way to read comments, so you can't get a complete translation using the API functions alone. Instead, for this particular purpose, it's better to parse the file line by line.

Retrieving Values
To retrieve the value of an item, you use the GetIniValue method, which accepts sectionName and keyName parameters. The method creates an XPath query that searches for the section with a name attribute matching the supplied section name, and then searches within that section for an item with a key attribute matching the supplied key name. If the XPath query matches an item, the function returns the text value of the value attribute of that item; otherwise it returns null.


   public String GetIniValue(String sectionName,
      String keyName) {
      XMLNode N = null;
      if ((sectionName != null) && (sectionName != "")
         && (keyName != null) && (keyName != "")) {
         N = GetItem(sectionName, keyName);
         if (N != null) {
            return(N.Attributes.GetNamedItem
               ("value").Value);
         }
      }
      return null;
   }

There is one major difference between XML-formatted files and INI files—XML files are case sensitive, while standard INI files aren't. The INIFileReader class deals with this by treating all data as case-insensitive by default. See the sidebar "Dealing With XML's Case Sensitivity for a more detailed explanation.文章地址: http://www.qqread.com/xml-soap/h228892.html 更多文章 更多内容请看.NET移动与嵌入式技术.NET开发手册XML详解专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章