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 文件

posted on 2009-02-07 15:39  茹古涵今  阅读(2875)  评论(0编辑  收藏  举报