There is an error in XML document (4, 2), What is it ?

Pertama kali melihat error ini, jadi pusing. Wah, error apa lagi ini. Usut punya usut, ternyata ini adalah error yang ditimbulkan ketika kita mengambil nilai dari sebuah XML file yang di create menjadi object, tetapi tidak ditemukan. Salah satu cara yang saya gunakan ( dapat info nya dari net ), adalah sebagai berikut  ( step lengkap dari create object sampai ambil value ):

–> Initialize Object :

   1: private void LoadInitialInfoItem()
   2: {
   3:     try
   4:     {
   5:         InitForm request = (InitForm)XmlDeserialize(typeof(InitForm), workflowProperties.Item.File);
   6:         userName = request.username;
   7:         total = request.expense;
   8:         WriteLogFilesInfo("LoadInitialInfoItem", request.username);
   9:         WriteLogFilesInfo("LoadInitialInfoItem", request.expense.ToString());
  10:     }
  11:     catch (Exception ex)
  12:     {
  13:         WriteLogFiles("LoadInitialInfoItem", ex.InnerException.ToString());
  14:         userName = "none";
  15:         total = 0;
  16:     }
  17: }

–> Deserialize Object :

   1: public object XmlDeserialize(Type type, SPFile file)
   2: {
   3:     XmlSerializer serializer = new XmlSerializer(type);
   4:     Stream stream = file.OpenBinaryStream();
   5:     XmlTextReader reader = new XmlTextReader(stream);
   6:     object obj = serializer.Deserialize(reader);
   7:     reader.Close();
   8:     stream.Close();
   9:
  10:     return obj;
  11: }

Ok, itu code awalnya… Tapi ketika dijalankan, muncul error ini : “There is an error in XML document (4, 2)”. Wah sempat pusing. setelah tanya sama om Google, akhirnya dapat informasi bahwa dengan menambahkan perintah position=0 pada stream object, akan solve. Yup.. akhirnya di coba :

   1: public object XmlDeserialize(Type type, SPFile file)
   2: {
   3:     XmlSerializer serializer = new XmlSerializer(type);
   4:     Stream stream = file.OpenBinaryStream();
   5:     stream.Position = 0;    // Ini Tambahannya
   6:     XmlTextReader reader = new XmlTextReader(stream);
   7:     object obj = serializer.Deserialize(reader);
   8:     reader.Close();
   9:     stream.Close();
  10:
  11:     return obj;
  12: }

Alhamdulillah, solve juga. Waktunya melaju ke modul selanjutnya. Hope usefull for reader 😀

Advertisements

About Ishak
Cloud Application Consultant | SharePoint Consultant | Badminton lover | Food hunter

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: