using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Xml;
namespace XMLoutput
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        DataSet ds = new DataSet();
        private void Form1_Load(object sender, EventArgs e)
        {
            SqlDataAdapter sda = new SqlDataAdapter("select * from uselog", "SERVER=.;DATABASE=testxml;INTEGRATED SECURITY=SSPI");
            sda.Fill(ds, "uselog");
            sda.SelectCommand.Connection.Close();
            this.dataGridView1.DataSource = ds.Tables["uselog"];
        }        private void button1_Click(object sender, EventArgs e)
        {
            XmlDataDocument xd = new XmlDataDocument();
            string xml = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>"
                      + "<test>"
                      + "<filedtable>用户登陆表</filedtable>"
                      + "<fileds>"
                      + "<filed attrname=\"username\"/>"
                      + "<filed attrname=\"empid\"/>"
                      + "<filed attrname=\"userpwd\"/>"
                      + "</fileds>"
                      + "<fileds>"
                      + "<rowdata>"
                      + "</rowdata>"
                      + "</fileds>"
                      + "</test>";
            xd.LoadXml(xml);            XmlElement xe;
            XmlElement rowdata = (XmlElement)xd.DocumentElement.SelectSingleNode("rowdata");
            
            foreach (DataRow var in ds.Tables["uselog"].Rows)
            {
                xe = xd.CreateElement("Row");
                xe.SetAttribute("name", var["username"].ToString());
                xe.SetAttribute("empid", var["empid"].ToString());
                xe.SetAttribute("usepwd", var["userpwd"].ToString());
                rowdata.AppendChild(xe);       //这里会出错:说没有实例化
            }
            xd.Save("e:\\test.xml");
        }
    }
}这个xe怎么实例化啊?在前面new 说是受保护级别。

解决方案 »

  1.   

    不会吧, 
    xe = xd.CreateElement("Row"); 
    这一句已经实例化了
      

  2.   

    估计是rowdata没有实例化吧,检查一下rowdata是否为null,也就是SelectSingleNode没有返回你希望的对象
      

  3.   

    确实我SelectSingleNode返回的是个NULL诶。这是怎么回事咧?我明明搜素的是有的元素啊
      

  4.   

    XmlElement rowdata = (XmlElement)xd.SelectSingleNode("//rowdata"); 这样比较保险