Il documento XML non valido, Il documento non ha un elemento radice

 private void btnmap_Click(object sender, EventArgs e)
 { 
 XmlDocument xmldoc = new XmlDocument();
                 XmlNode xmlnode, xmlroot, docNode, Doc;
                 XmlAttribute xmlatt;
                 docNode = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);
                 xmldoc.AppendChild(docNode);                
                 if (rchtextfile.Text == "")
                 {
                     MessageBox.Show("Please Select a Text file", "File Name Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 }
                 else
                 {
                     con = new System.Data.SqlClient.SqlConnection();
                     DataSet 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 Styles from Xml_Tags,pdfelement where Xml_Tags.Mapping_Id=pdfelement.Mapping_Id AND Xml_Tags.Pdf_Tag=pdfelement.Element_Name AND pdfelement.Style=Xml_Tags.Styles";
                     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
                     {                       
                         for (int i = 0; i < maxrows; i++)
                         {                           
                             dRow = ds.Tables["xml"].Rows[i];                             
                             line = objReader.ReadLine();
                             if (line == null)
                             {
                                 //xmldoc.Save(ya);
                             }
                             else
                             {
                                 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";
                                 }                                                                  
                                 String sqll = "select Dtd_Tag from Xml_Tags,pdfelement where Xml_Tags.Mapping_Id=pdfelement.Mapping_Id AND Xml_Tags.Pdf_Tag=pdfelement.Element_Name AND pdfelement.Style=Xml_Tags.Styles";
                                 SqlCommand comm = new SqlCommand(sqll);
                                 SqlDataAdapter daa = new System.Data.SqlClient.SqlDataAdapter(sqll, con);
                                 DataSet ds1 = new DataSet();
                                 daa.Fill(ds1, "xml");
                                 dRow1=ds1.Tables["xml"].Rows[i];                                
                                 String sqlll = "select Dtd_Attribute_Name from Mapped_Tags_Attributes,Xml_Tags where Mapped_Tags_Attributes.Pdf_Tag=Xml_Tags.Pdf_Tag AND Mapped_Tags_Attributes.Mapping_Id=Xml_Tags.Mapping_Id";
                                 SqlCommand cmd = new SqlCommand(sqlll);
                                 SqlDataAdapter dt = new System.Data.SqlClient.SqlDataAdapter(sqlll, con);
                                 DataSet ds2 = new DataSet();
                                 dt.Fill(ds2, "xml");
                                 dRow2 = ds2.Tables["xml"].Rows[i];
                                 name = XmlConvert.EncodeName(dRow1.ItemArray.GetValue(0).ToString());
                                 xmlnode = xmldoc.CreateElement(name);
                                 Doc = xmldoc.CreateDocumentType(name, null, "E:\\Rachana_mds\\proj\\pdfextraction\\docbook.dtd", null);                                
                                 xmlroot = xmldoc.CreateElement(name);                                 
                                 xmlatt = xmldoc.CreateAttribute(dRow2.ItemArray.GetValue(0).ToString());
                                 xmlroot.AppendChild(xmlnode);
                                 xmlnode.InnerText = sub;                                                                
                             }
                         }
                     }                    
                     while (dRow[0].ToString()!=line && !objReader.EndOfStream);
                         MessageBox.Show("Done");
                         string filename = @"E:" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Minute + ".xml";                         
                         xmldoc.Save(filename);                                                  
                         MessageBox.Show("Successfully saved");                                              
                 }                
                 con.Close();              
}

Io sono sempre errore per questa linea. ...xmldoc.Save(filename);

  • Nessuno sta andando a leggere il codice. Inoltre, non è nemmeno una domanda. Si prega di leggere questo: tinyurl.com/so-hints
  • la mia domanda è all’ultima riga del codice..
  • No, non c’è dubbio…
  • Specificare l’eccezione che hai trovato?
  • Il documento XML non valido, Il documento non è un elemento principale eccezione..
InformationsquelleAutor rachana | 2011-05-12



2 Replies
  1. 4

    Non si è mai chiamata doc.AppendChild(xmlroot); quindi, anche se hai creato gli elementi, non si è mai davvero metterli nel documento. Quindi, non dispone di un elemento radice.

    Ora, se si fatto creare l’elemento principale e aggiungere, avresti ancora un problema, se la for loop eseguito più di una volta, come si potrebbe essere cercando di aggiungere più radici. Probabilmente si desidera creare xmlroot fuori il ciclo, e quindi creare gli elementi nidificati all’interno il ciclo.

    Se è possibile utilizzare .NET 3.5 o superiore e LINQ to XML, un sacco di questo codice sarebbe molto più semplice, a proposito…

  2. 0

    Al di sotto della linea è anche corretto:

    string filename = @"E:" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Minute + ".xml";                    

    sostituire la riga con:

    string filename = @"E:\\" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Minute + ".xml";                              

Lascia un commento