又一次学习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 +=" \n <!--"+ node.Value+"-->";
return text;
}
//由于xmltext和xmlcommetn的书写格式不一样,只有他们判断之后,才能写节点<...>,
text += "\n <" + 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 += " \t \n </" + node.Name + ">"; //非文本类型,加结束符号
}
return text;
}

  顺便提提ref和out:

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

最新文章

  1. Microsoft Client Development MVP 2013 - 2014
  2. 关于防止App被第三方应用Kill掉的问题
  3. Ubuntu 16.04 下使用Xampp
  4. 23Spring_JdbcTemplate来实现单表的增删改查
  5. 【转载】使用barman备份PostgreSQL
  6. ASP连接access 数据库的增删改查 - imsoft.cnblogs
  7. 将序列设置为字段的默认值 - oracle
  8. WINCE 开机自动弹USB连接窗口问题(已解决)
  9. 服务 进程间通讯 IPC AIDL Parcelable 简介
  10. 初入Python继承
  11. Understanding JavaScript Function Invocation and &quot;this&quot;
  12. crm维护踩坑记(一)
  13. Mysql连接问题:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
  14. VS Less Compiler插件使用
  15. java 随机出题四则运算
  16. 解决win7 win10上网卡慢问题
  17. 原生table相关写法
  18. 转载:Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty(&quot;user.dir&quot;)的理解
  19. Notes of Daily Scrum Meeting(12.17)
  20. Datagridview 在基于文本的单元格中启用换行,自动调整行高列宽

热门文章

  1. Oracle的闪回特性之恢复truncate删除表的数据
  2. font-face自定义字体使用方法
  3. bzoj 1119 [POI2009]SLO &amp;&amp; bzoj 1697 [Usaco2007 Feb]Cow Sorting牛排序——思路(置换)
  4. RK3288 dts文件中背光配置参数
  5. FPGA中RAM使用探索
  6. 1132 Cut Integer
  7. ubuntu安装composer
  8. 安卓端后台登录接口单元测试demo
  9. Py修行路 python基础 (五)三元运算 字符编码 元组 集合 三级菜单优化!
  10. js实现的点击div区域外隐藏div区域