纳金网

标题: C#读写XML文件小结 [打印本页]

作者: 王者再临    时间: 2014-11-25 02:13
标题: C#读写XML文件小结
C#读写XML文件一点小结贴。

基础知识:
可以参考如下地址文章:
http://www.cnblogs.com/mingmingruyuedlut/archive/2011/01/26/1945107.html

如果是Unity3d中可以参考雨松MOMO的文章:Unity3D研究院之使用 C#合成解析XML与JSON(四十一)

        //所需要添加的命名空间
    using System.Xml;
    //初始化一个xml实例
    XmlDocument xml=new XmlDocument();

    //导入指定xml文件
    xml.Load(“xml文件路径path”);

    //指定一个节点
    XmlNode root=xml.SelectSingleNode("节点名称");

    //获取节点下所有直接子节点
    XmlNodeList childlist=root.ChildNodes;

    //判断该节点下是否有子节点
    root.HasChildNodes;

    //获取同名同级节点集合
    XmlNodeList nodelist=xml.SelectNodes("节点名称");

    //生成一个新节点
    XmlElement node=xml.createElement_x_x_x_x_x("节点名称");

    //将节点加到指定节点下,作为其子节点
    root.A(node);

    //将节点加到指定节点下某个子节点前
    root.InsertBefore(node,root.ChildeNodes);

    //为指定节点的新建属性并赋值
    node.SetAttribute("id","11111");

    //为指定节点添加子节点
    root.A(node);

    //获取指定节点的指定属性值
    string id=node.Attributes["id"].Value;

    //获取指定节点中的文本
    string content=node.InnerText;

    //保存XML文件
    xml.Save(“xml文件存储的路径path”);


忽略注释问题:
C#在读取XML的时候会读取XML中的全部内容,对于其中注释掉的部分也可以通过节点获取到。
我们可以通过设置IgnoreComments 属性来只读取未加注释的XML信息。
下面是加载为参加注释的XML信息代码:
XmlDocument xmlDoc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
string strPath = Application.StartupPath + string.Format("\\{0}", xmlDocName);
XmlReader reader = XmlReader.Create(strPath, settings); 6: xmlDoc.Load(reader);


需要注意的是,如果你已经用上面这种去注释的方式读入XML,再之后在程序中修改XML是不行的,修改完后最后调用save函数时会报IOException,因为xmlDoc.Load(reader)这句读入XML文件是只读的,你又要修改,所以文件状态标志位冲突了。所以最后save的时候就报IOException了。所以要修改XML文件就常规的new document完后load就行了。

作者: hyui    时间: 2014-11-25 04:52
Interesting stuff !!!
作者: cgjch8    时间: 2014-11-25 10:59
thanks thanks




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5