zoukankan      html  css  js  c++  java
  • 二度xml<一>

    又一次学习Xml,之前差不多都忘了,为了下半年的面试,为了工作重头来过。。。。。。。

    其实我觉得直接上代码来的更实际点,理论的东西,我们随便找点书看看就行。

    下面的代码是为了打印出一个xml文件

    xml文件如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <books>
      <book>
        <title title="nimei" >beginning with C# 4.0</title>
        <author>Karli Waton</author>
        <!-- nijsfsajfsaf-->
        <code>7865</code>
      </book>
    </books>
    

      代码如下:

    public void LoadXmlFileAndPrint()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("../../testXml2.xml");
                XmlNode node= xmlDoc.DocumentElement;
               // string result=Print( node, "","");
                string result = LoopFunctionGetResult(node,"");
                Console.Write(result);
            }
    
            private string LoopFunctionGetResult(XmlNode node, string text)
            {
    
                //所有的Node都有类型,分为:element,comment,xmltext;而xmltext,comment是没有attribute、butes属性的,
                //所有有关xmltext和commend的操作要放到有关element操作之前
    
                if (node is XmlText)          //判断是否是xmltext类型
                {
                    text += node.Value;
                    return text;
                }
    
                if (node is XmlComment)       //判断是否是xmlcomment类型                     
                {
                    text +=" 
     <!--"+ node.Value+"-->";
                    return text;
                }
                //由于xmltext和xmlcommetn的书写格式不一样,只有他们判断之后,才能写节点<...>,
                text += "
     <" + node.Name;
    
                if (node.Attributes.Count > 0)
                {
                    AddAttributesMe(node, ref text);
                }
                if (node.HasChildNodes)
                {
                    text +="> ";
                    foreach (XmlNode child in node.ChildNodes)
    
                        //如果该节点下存在子节点,就递归调用函数(注意:返回的值也要接收)
                       text=LoopFunctionGetResult(child, text);   
                   
                    //如果当前节点是text or commend,加结束符号
                    //if (node.ChildNodes.Count == 1 && (node.FirstChild is XmlText || node.FistChild is XmlCommend)   
                  
                    //{
                    //    text += "</" + node.Name + ">";
                    //}
                    //else  (这写可以不要,写上思路更加清晰)
                        text += "  	  
     </" + node.Name + ">";                    //非文本类型,加结束符号
                }
                return text;
            }
    

      顺便提提ref和out:

    ref和out都是传引用而不是传值;不同之处在于:ref在传引用之前要初始化,而out不用。他们编译是完全一样的!

  • 相关阅读:
    Linux系统下使用pwgen生成密码的使用教程
    使用John the ripper工具来尝试破解Linux密码
    把Arch Linux安装到U盘上的具体教程
    Arch Linux安装后的一些初始设置简介
    Linux下的sed命令使用详解
    Ubuntu GNOME 安装日语输入法(收集)
    网页设定固定背景图片(抄袭自百度FM)
    一个不错的flash 模板
    Ubuntu 14.04 LAMP搭建小记
    KindEditor 修改多图片上传显示限制大小和张数
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3214038.html
Copyright © 2011-2022 走看看