zoukankan      html  css  js  c++  java
  • xmldocument操作

    Code

    要点:获取到要操作的XML文件地址,两种方法:server.mappath("FileName.xml"),appdomain...

         获取到子节点,两种方法:mydoc.SelectSingleNode("config/sql/meter");

      private XmlNode GetDataSourceInfo(XmlNode node, string reportName)
        {
            XmlNodeList node1 = node.SelectNodes("sqlsource");
            if (node1 == null)
            {
                throw new XmlException("Can't find DataSource Node");
            }
            foreach (XmlNode _node in node1)
            {
                XmlNodeList list1 = _node.SelectNodes("*"); ;
                foreach (XmlNode node2 in list1)
                {
                    string text1;
                    if ((text1 = node2.Name) == null)
                    {
                        continue;
                    }
                    text1 = string.IsInterned(text1);
                    if (text1 == "reportName" && node2.InnerText == reportName)
                    {
                        return _node;
                    }
                }
             }
             return null;
        }

    另附参考网上资料:

    将一个XmlDocument对象绑定到DataSet中以便将它绑定到控件上。
    by Dan Wahlin

    数据绑定是.NET平台上的一个强大功能,它能使你将不同的数据源绑定到DataGrid、DataList和Repeater控件上。将DataTable、ArrayList或者Hashtable这类数据源绑定到控件上是非常容易的,但你可能经常需要将它们绑定到一个XmlDocument上。这种情况尤其体现在你使用的组件返回的是一个XmlDocument而不是来自某个方法的一个DataSet时。

    虽然由于XmlDocument对象不支持IList等接口而使你无法直接将它绑定到控件上,但是实现绑定并不复杂。事实上,你只需编写几行代码便可将它绑定到一个DataSet中,然后通过DataSet将它绑定到其他控件上。

    它的诀窍在于使用了System.Xml命名空间下的XmlNodeReader类。这个特定的类是从XmlReader中继承而来的,而且它能够将XmlDocument导入到一个DataSet的ReadXml()方法中。之后你便可以将这个DataSet绑定到各类控件中了。XmlNodeReader负责将XML数据从XmlDocument中的某个特定节点中导出来。数据流开始的节点会被输送到XmlNodeReader的构造器中:

    [C#] public XmlNodeReader(
       XmlNode node
    );
     


    [VB.NET]

    Public Sub New( _
       ByVal node As XmlNode _
    )


    XmlDocument的根元素(引用自DocumentElement属性)可以被传入XmlNodeReader的构造器中以防整个XmlDocument需要被转化为XML数据流。以下代码说明如何通过XmlNodeReader类来将一个XmlDocument转化为一个DataSet(DataSet中的一个DataTable会被绑定到一个DataGrid服务器控件中):

    private void Page_Load(object sender,
       System.EventArgs e) {
     XmlDocument doc = new XmlDocument();
     doc.Load(Server.MapPath("Orders.xml"));
     XmlNodeReader reader = new XmlNodeReader(doc);
     DataSet ds = new DataSet();
     ds.ReadXml(reader);
     reader.Close();
     dg.DataSource = ds.Tables[0].DefaultView;
     dg.DataBind();
    }

    <?xml version="1.0" encoding="utf-8"?> 
    <userdata createuser="false">
      <dataconnection>
        <server>xml test</server>
        <uid>sa</uid>
        <pwd>sa</pwd>
      </dataconnection>
      <net>
        <name>xml document</name>
      </net>
    </userdata>

    读取节点中的一个属性
       XmlDocument doc=new XmlDocument();
       doc.Load("config.xml");
       XmlNode xnuser=doc.SelectSingleNode("userdata");
       string flag=xnuser.Attributes["createuser"].InnerText;

    读取节点中的值
       XmlDocument doc=new XmlDocument();
       doc.Load("config.xml");
       XmlNode xnserver = doc.SelectSingleNode("userdata/dataconnection/server");

    修改节点的属性
       XmlDocument doc=new XmlDocument();
       doc.Load("config.xml");
       XmlNode xnuser=doc.SelectSingleNode("userdata");
       xnuser.Attributes["createuser"].InnerText="false";
       doc.Save("config.xml");

    追加节点
       XmlDocument doc = new XmlDocument();
       XmlTextReader reader = new XmlTextReader("config.xml");
       doc.Load("config.xml");
       XmlElement root = doc.DocumentElement; // 获取根节点
       XmlElement tagMessage = doc.CreateElement("net");
       XmlElement tagText = doc.CreateElement("name");
       tagText.InnerText  = netname;
       tagMessage.AppendChild(tagText);   // 追加到 xml 文本的最后面
       root.AppendChild(tagMessage);
       reader.Close();     // 关闭 XmlTextReader
       doc.Save("config.xml");     // 保存 xml 文件

  • 相关阅读:
    【BZOJ3052】[wc2013]糖果公园 带修改的树上莫队
    【BZOJ4668】冷战 并查集
    HCNP学习笔记之史上最全华为路由器交换机配置命令大合集
    前端学习笔记之css清除浮动float的七种常用方法总结和兼容性处理
    前端学习笔记之CSS浮动浅析
    前端学习笔记之CSS文档流
    前端学习笔记之HTML/CSS 速写神器 Emmet
    js 基本类型与引用类型的存储
    Javascript何时执行
    Number使用笔记
  • 原文地址:https://www.cnblogs.com/legend_sun/p/1385921.html
Copyright © 2011-2022 走看看