有xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Report>
  <DataSets>
    <DataSet Name="DataSet0">
      <Query>
        <CommandType>StoredProcedure</CommandType>
        <CommandText>fxf_GetResource</CommandText>
        <QueryParameters>
          <QueryParameter Name="@p_ResourceID">
            <Value>=Parameters!p_ResourceID.Value</Value>
          </QueryParameter>
          <QueryParameter Name="@p_LCID">
            <Value>=Parameters!p_LCID.Value</Value>
          </QueryParameter>
        </QueryParameters>
      </Query>
    </DataSet>
    <DataSet Name="DataSet1">
      <Query>
        <CommandType>StoredProcedure</CommandType>
        <CommandText>[fxf_GetStaffInfo]</CommandText>
        <QueryParameters>
          <QueryParameter Name="@IsPersonal_p">
            <Value>=Parameters!IsPersonal_p.Value</Value>
          </QueryParameter>
          <QueryParameter Name="@UserID_p">
            <Value>=Parameters!UserID_p.Value</Value>
          </QueryParameter>
        </QueryParameters>
      </Query>
    </DataSet>
  </DataSets>
</Report>
怎么放进如下格式的DataTable??
myData = new DataTable();
myData.Columns.Add(new DataColumn("DataSetName", System.Type.GetType("System.String")));
myData.Columns.Add(new DataColumn("CommandType", System.Type.GetType("System.String")));
myData.Columns.Add(new DataColumn("CommandText", System.Type.GetType("System.String")));
myData.Columns.Add(new DataColumn("QueryParameterName", System.Type.GetType("System.String")));最后DataTable结果为
DataSet0 StoredProcedure fxf_GetResource    @p_ResourceID @p_LCID
DataSet1 StoredProcedure [fxf_GetStaffInfo] @IsPersonal_p @UserID_p

解决方案 »

  1.   

    不好意思,更正
    最后DataTable结果为
    DataSet0 StoredProcedure fxf_GetResource    @p_ResourceID
    DataSet0 StoredProcedure fxf_GetResource    @p_LCID
    DataSet1 StoredProcedure [fxf_GetStaffInfo] @IsPersonal_p 
    DataSet1 StoredProcedure [fxf_GetStaffInfo] @UserID_p
      

  2.   

    如果不行的话,用xmldocument去逐个分析。
      

  3.   

    用DataSet.ReadXml来读取 ,不行因为文件中除了我列出的这些外,还有些会让上面的语句出错的,如:
      <rd:DrawGrid>true</rd:DrawGrid>
    会报错:{"'rd' is an undeclared namespace. Line 6, position 8."}
      

  4.   

    xmldocument 我昨天0刚做了一个类似的
      

  5.   

    现在DataSets中有两个DataSet,分别是DataSet0 和,DataSet1
    怎么得到这两个DataSet?
    我用            
    XmlNodeList nodes = xmlDoc.SelectNodes("//DataSets");
    只返回1个DataSet
      

  6.   

    XmlNodeList nodes = xmlDoc.SelectNodes("//DataSets/DataSet");这样能取到2个DataSet了,不过不是很明白,//代表什么,这里面的路径关系是怎么表示的?
      

  7.   

    重要问题xmlDoc.Load 的时候还是会报错,<rd:DrawGrid>true</rd:DrawGrid>
    会报错:{"'rd' is an undeclared namespace. Line 6, position 8."}怎么解决阿
      

  8.   

    rd:DrawGrid  -- 〉 rdDrawGrid把冒号去掉
      

  9.   

    晕,最多连续发言3次!现在我是
    FileStream filestm = new FileStream("filename", FileMode.Open, FileAccess.Read);
    byte[] buffer = new byte[(int)filestm.Length];
    filestm.Read(buffer, 0, buffer.Length);
    string ls_temp = buffer.ToString();
    ls_temp = ls_temp.Replace("rd:", "");
    xmlDoc.l.LoadXml(ls_temp);问题是 buffer.ToString();并不是我想得到的
    怎么把byte[]里的内容转成string 呢?
      

  10.   


    XmlDocument xmlDoc = new XmlDocument();
    string ls_temp = "";
    StreamReader srm = new StreamReader(filepath,Encoding.Default);
    ls_temp = srm.ReadToEnd();
    ls_temp = ls_temp.Replace("rd:", "");
    xmlDoc.LoadXml(ls_temp);DataTable myData = new DataTable();
    myData.Columns.Add(new DataColumn("DataSetName", System.Type.GetType("System.String")));
    myData.Columns.Add(new DataColumn("CommandType", System.Type.GetType("System.String")));
    myData.Columns.Add(new DataColumn("CommandText", System.Type.GetType("System.String")));
    myData.Columns.Add(new DataColumn("QueryParameterName", System.Type.GetType("System.String")));XmlNodeList nodes = xmlDoc.SelectNodes("//DataSets/DataSet");
    XmlNodeList subnodes = null;
    string ls_DataSetName = "";
    string ls_CommandType = "";
    string ls_CommandText = "";
    string ls_QueryParameterName = "";for (int i = 0; i < nodes.Count; i++)
    {
        XmlElement xe = (XmlElement)nodes[i];
        ls_DataSetName = xe.GetAttribute("Name");    xe = null;
        xe = (XmlElement)nodes[i].SelectSingleNode("Query").SelectSingleNode("CommandType");
        
        ls_CommandType = xe.InnerText;    xe = (XmlElement)nodes[i].SelectSingleNode("Query").SelectSingleNode("CommandText");
        ls_CommandText = xe.InnerText;
        subnodes = nodes[i].SelectSingleNode("Query").SelectSingleNode("QueryParameters").SelectNodes("QueryParameter");
        for (int j = 0; j < subnodes.Count; j++)
        {
            xe = (XmlElement)subnodes[j];
            ls_QueryParameterName = xe.GetAttribute("Name");
            myData.Rows.Add(ls_DataSetName, ls_CommandType, ls_CommandText, ls_QueryParameterName);    }
    }不知道有没有更简单的写法?