Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > xml toplu kayıt (şema ile birlikte)
Yazar
sevecen


avatar
adana istanbul
Kayıt: 08.02.2006
29.01.2009-11:13 #56226
Daha önce xml insertte problem yaşamıyordum. Şimdi şema ile birlikte gönderince problem oldu.
Msdnden bakıp farklı şeyler denedim ama olmadı.

Hata mesajı şu:
The error description is 'An invalid character was found in text content.'.
Could not find prepared statement with handle 0. sp_xml_removedocument:
The value supplied for parameter number 1 is invalid. Satışlar kaydedilemedi !
The XML parse error 0xc00ce508 occurred on line number 1, near the XML text "

msdnden bakıp xmli farklı okudum o kodlar da şu:
        XmlTextReader tr = new XmlTextReader(StPath);
	XmlValidatingReader vr = new XmlValidatingReader(tr);
	string b = vr.ReadInnerXml();
	return b;


Yardımlarınızı bekliyorum. Kolay gelsin hepinize.





bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)





Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
29.01.2009-13:21 #56233
Xml içine özel karakterler koyuyorsan problem olabilir. İçerik koyduğun yerlerde CDATA kullanmayı dene.

<![CDATA[ Burada < > & " vs kullanabilirsin ]]>

Bir de hızı sana yetiyorsa en kolay şekilde Xml okumak ve yazmak için XmlDocument kullanmanı tavsiye ederim.






Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
sevecen


avatar
adana istanbul
Kayıt: 08.02.2006
29.01.2009-14:26 #56236
XmlDocument kullanıyordum, hata dolayısı ile validating kullanmak zorunda kaldım aslında cdata da aklıma gelmişti ama dataset.writexml kullanıldığı için hard code yazmak istemedim. Ama çözüm olacaksa yapacağım fakat cdataları koymama rağmen yine benzer hatalar verdi.

The error description is 'A name was started with an invalid character.'. Could not find prepared statement with handle 0. sp_xml_removedocument: The value supplied for parameter number 1 is invalid. The XML parse error 0xc00ce504 occurred on line number 1, near the XML text "980148816394EHLİYET(A2) SINIFI103677<GENEL ZAMAN1Eğitim2000-01-01T00:00:00.0000000+02:002099-12-31T00:00:00.0000000+02:003001TL1300300". The statement has been terminated.

.Net 2003 ve sql 2005 kullanıyorum bu arada.

Xml budur:

<?xml version="1.0" encoding="windows-1254"?>
<NewDataSet>
  <Satis>
    <ID_SATISLAR><![CDATA[980148816]]</ID_SATISLAR>
    <ID_SATISTURU><![CDATA[394]]</ID_SATISTURU>
    <GRUP><![CDATA[EHLİYET]]</GRUP>
    <ACIKLAMA><![CDATA[(A2) SINIFI]]</ACIKLAMA>
    <ID_ZAMAN><![CDATA[103677]]</ID_ZAMAN>
    <ZAMAN_AD><![CDATA[GENEL ZAMAN]]</ZAMAN_AD>
    <TIP><![CDATA[1]]</TIP>
    <TIP_AD><![CDATA[Eğitim]]</TIP_AD>
    <BASTARIH><![CDATA[2000-01-01T00:00:00.0000000+02:00]]</BASTARIH>
    <BITTARIH><![CDATA[2099-12-31T00:00:00.0000000+02:00]]</BITTARIH>
    <FIYATLISTE><![CDATA[300]]</FIYATLISTE>
    <ID_PBIRIM><![CDATA[1]]</ID_PBIRIM>
    <PBIRIM_AD><![CDATA[TL]]</PBIRIM_AD>
    <TOPDERSSAAT><![CDATA[1]]</TOPDERSSAAT>
    <SAATUCRETI><![CDATA[300]]</SAATUCRETI>
    <FIYATKAYIT><![CDATA[300]]</FIYATKAYIT>
    <GORUSEN />
  </Satis>
</NewDataSet>


Sql tarafı da bildiğiniz gibi sp_xml_preparedocument, removedocument vs.





bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)





Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
29.01.2009-14:46 #56237
sevecen yazdi
 
XmlDocument kullanıyordum, hata dolayısı ile validating kullanmak zorunda kaldım aslında cdata da aklıma gelmişti ama dataset.writexml kullanıldığı için hard code yazmak istemedim. Ama çözüm olacaksa yapacağım fakat cdataları koymama rağmen yine benzer hatalar verdi.

The error description is 'A name was started with an invalid character.'. Could not find prepared statement with handle 0. sp_xml_removedocument: The value supplied for parameter number 1 is invalid. The XML parse error 0xc00ce504 occurred on line number 1, near the XML text "980148816394EHLİYET(A2) SINIFI103677<GENEL ZAMAN1Eğitim2000-01-01T00:00:00.0000000+02:002099-12-31T00:00:00.0000000+02:003001TL1300300". The statement has been terminated.

.Net 2003 ve sql 2005 kullanıyorum bu arada.

Xml budur:

<?xml version="1.0" encoding="windows-1254"?>
<NewDataSet>
  <Satis>
    <ID_SATISLAR><![CDATA[980148816]]</ID_SATISLAR>
    <ID_SATISTURU><![CDATA[394]]</ID_SATISTURU>
    <GRUP><![CDATA[EHLİYET]]</GRUP>
    <ACIKLAMA><![CDATA[(A2) SINIFI]]</ACIKLAMA>
    <ID_ZAMAN><![CDATA[103677]]</ID_ZAMAN>
    <ZAMAN_AD><![CDATA[GENEL ZAMAN]]</ZAMAN_AD>
    <TIP><![CDATA[1]]</TIP>
    <TIP_AD><![CDATA[Eğitim]]</TIP_AD>
    <BASTARIH><![CDATA[2000-01-01T00:00:00.0000000+02:00]]</BASTARIH>
    <BITTARIH><![CDATA[2099-12-31T00:00:00.0000000+02:00]]</BITTARIH>
    <FIYATLISTE><![CDATA[300]]</FIYATLISTE>
    <ID_PBIRIM><![CDATA[1]]</ID_PBIRIM>
    <PBIRIM_AD><![CDATA[TL]]</PBIRIM_AD>
    <TOPDERSSAAT><![CDATA[1]]</TOPDERSSAAT>
    <SAATUCRETI><![CDATA[300]]</SAATUCRETI>
    <FIYATKAYIT><![CDATA[300]]</FIYATKAYIT>
    <GORUSEN />
  </Satis>
</NewDataSet>


Sql tarafı da bildiğiniz gibi sp_xml_preparedocument, removedocument vs.


Burdaki CDATA 'lar yanlış. Kapatmala ]] değil ]]> şeklinde olmalı.





Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
sevecen


avatar
adana istanbul
Kayıt: 08.02.2006
29.01.2009-19:03 #56251
Evet sonradan ben de farkettim düzelttim. Şu an kayıt yapabiliyorum ama fazlaca kod yazmak sorunda kaldım. cdataları yerleştirmeden kendim xml üretmeden DataSet1.WriteXml'in oluşturduğu xmli kaydedebilmem gerekiyor. Çözümü bulunca buraya da yazarım.
Hepiniz sağoun.





bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)





Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
29.01.2009-19:04 #56252
Var mı bir gelişme?thinking





Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
sevecen


avatar
adana istanbul
Kayıt: 08.02.2006
29.01.2009-20:50 #56257
birazdan araştıracağım dataset in writexml metodu için cdatalı şekilde yazdırma imkanımız var mı? tabii bunu .net 2003 için araştıracağım :)





bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
29.01.2009-21:54 #56260
writer.WriteCData






N/A
Yazar
sevecen


avatar
adana istanbul
Kayıt: 08.02.2006
30.01.2009-10:47 #56278
Sql'de xmlden toplu kayıt yapan arkadaşların çok işine yarayacak diye düşünüyorum.

///DataSet alır, sql'in kaydedebileceği xml stringi oluşturur.
public static string GetStringFromDsToXmlWithCDATA(DataSet ds)
    {
        StringBuilder bu = new StringBuilder(); /*System.Text*/
        bu.Append("<NewDataSet>");
        foreach (DataRow r in ds.Tables[0].Rows)
        {
            bu.Append("<Records>");
            foreach (DataColumn c in ds.Tables[0].Columns)
            {
                bu.Append("<");
                bu.Append(c.ColumnName);
                bu.Append(">");
                bu.Append("<![CDATA[");
                bu.Append(r[c.ColumnName]);
                bu.Append("]]");
                bu.Append(">");
            }//foreach
            bu.Append("</Records>");
        }//foreach
        bu.Append("</NewDataSet>");
        return bu.ToString();
    }//GetStringFromDsToXmlWithCDATA


Not: orhan Bu metodu dün gece yazmıştım, şimdi buraya aktarıyorum. Cevabını şimdi gördüm. w.WriterCData satır bazlı çalışan bir şey diye düşündüm. Döngüye girdikten sonra manuel yazmak pek de zor olmadı. XmlWriter'ı kullanırken de sorunlarla karşılaştım şimdi.

XmlWriterSettings settings = new XmlWriterSettings();
XmlWriter w = XmlWriter.Create("C:XmlDeneme.xml", settings);


XmlWriterSettings'i bulamadı vs. 2003 olduğundan mıdır nedir? ;)

Tüm arkadaşlara ilgilerinden dolayı teşekkür ederim. Hepinize kolay gelsin.








bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb