2011-05-05 60 views
-1
private void btnmap_Click(object sender, EventArgs e) 
{    
    XmlDocument xmldoc = new XmlDocument();     
    con = new System.Data.SqlClient.SqlConnection(); 
    ds = new DataSet(); 
    con.ConnectionString = @"Server=MDS-SW02; User ID=sa; Pwd=Admin2011;Initial Catalog=xml;"; 
    con.Open(); 
    MessageBox.Show("Database Connected");     
    String sql = "select Pdf_tag,Styles from Xml_Tags";    
    com = new SqlCommand(sql);   
    da = new System.Data.SqlClient.SqlDataAdapter(sql,con);    
    da.Fill(ds, "xml");     
    maxrows = ds.Tables["xml"].Rows.Count; 
    StreamReader objReader = new StreamReader(file,Encoding.Default,true); 

    do 
    {           
     string line = objReader.ReadLine(); 
     string st1 = ">"; 
     string st2 = "</"; 
     int end = line.IndexOf(st2); 
     if (end != -1 && end > 1) 
     { 
     st = line.IndexOf(st1); 
     en = line.IndexOf(st2); 
     int v = en - st; 
     sub = line.Substring(st + 1, v - 1);        
     rchtext.Text = rchtext.Text + sub + "\r\n"; 
     }      
     for (int i = 0; i < maxrows; i++) 
     { 
      dRow = ds.Tables["xml"].Rows[i]; 
      if(dRow[0].ToString()==line) 
      { 
       //XmlDocument xmldoc = new XmlDocument(); 
       XmlNode docNode = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null); 
       xmldoc.AppendChild(docNode); 
       XmlNode xmlnode,xmlroot; 

       String sqll = "select Dtd_Tag from Xml_Tags where Mapped_Tags_Attributes.Pdf_Tag=Xml_Tags.Pdf_Tag"; 
       SqlCommand comm = new SqlCommand(sqll); 
       SqlDataAdapter daa = new System.Data.SqlClient.SqlDataAdapter(sqll, con); 
       daa.Fill(ds1, "xml"); 
       dRow1 = ds1.Tables["xml"].Rows[i]; 

       string name = XmlConvert.EncodeName(dRow1.ItemArray.GetValue(0).ToString()); 
       xmlnode = xmldoc.CreateElement(name); 

       XmlNode Doc = xmldoc.CreateDocumentType(name, null, "E:\\Rachana_mds\\proj\\pdfextraction\\docbook.dtd", null); 
       xmldoc.AppendChild(Doc); 

       xmlroot = xmldoc.CreateElement(dRow1.ItemArray.GetValue(0).ToString()); 
       xmldoc.AppendChild(xmlroot);    

       String sqlll = "select Dtd_Attribute_Name from Mapped_Tags_Attributes where Mapped_Tags_Attributes.Pdf_Tag=Xml_Tags.Pdf_Tag"; 
       SqlCommand cmd = new SqlCommand(sqlll); 
       SqlDataAdapter dt = new System.Data.SqlClient.SqlDataAdapter(sqlll,con); 
       dt.Fill(ds2, "xml"); 
       dRow2 = ds2.Tables["xml"].Rows[i]; 

       xmlroot = xmldoc.CreateElement(name); 
       xmldoc.AppendChild(xmlroot); 
       XmlAttribute xmlatt = xmldoc.CreateAttribute(dRow2.ItemArray.GetValue(0).ToString());            
       xmlroot.AppendChild(xmlnode); 
       xmlnode.InnerText=sub;      
      }                 
      while (objReader.Peek() != -1); 
      //string filename = @"E:" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Minute + ".xml"; 
      string filename = @"E:\" + DateTime.Now.ToString("dd/mm/yyyy")+".xml"; 
      xmldoc.Save(filename); 
      MessageBox.Show("Done"); 
      con.Close();         
} 
+6

是否有与此相关的问题? – 2011-05-05 11:04:01

+0

这是什么意思,你在哪里得到错误 – Dotnet 2011-05-05 11:06:10

+0

我已经宣布ds1和ds2全球...我需要从一个表中获取元素和来自其他表的属性来创建xml .. – rachana 2011-05-05 11:06:53

回答

3

啊,现在你已经告诉我们,符合误差(评论),问题是显而易见的:

dRow = ds.Tables["xml"].Rows[i]; 
if(dRow[i].ToString()==line) {...} 

dRow为行;除非您的数据是纯正方形,否则您可能打算访问每行的第一列:

dRow = ds.Tables["xml"].Rows[i]; 
if(dRow[0].ToString()==line) {...} 
+0

我在这一行中得到错误..如果(dRow [i] .ToString()==行) – rachana 2011-05-05 11:08:57

+0

我想获取存储在数据库中的DTD标签来替换PDF转换后的文本文件中的标签来创建xml – rachana 2011-05-05 11:10:10

+0

@rachana - 请参阅更新 – 2011-05-05 11:11:08