• 二度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不用。他们编译是完全一样的!

  • 相关阅读:
    01时间处理--02 指定日期--转成星期
    中文乱码处理
    判断js变量是否定义,
    安卓请求服务器js文件下载到本地,版本号不一致就下载
    a标签href跳转---传值---禁止单引号
    修改mysql配置文件,group_concat设置为最大.默认1024个字节字符串.多条json会超出
    GROUP_CONCAT()多条数据.拼接字符串 最大长度1024
    使用变量判断之前.务必先定义
    多种序列化器-指定类对象
    JsonHelper
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3214038.html
Copyright © 2020-2023  润新知