PDA

View Full Version : dataset و xml



titbasoft
چهارشنبه 24 فروردین 1384, 02:02 صبح
قسمت اول:
اگه میشه توضیح بدید چطوری می تونم یکی از دو کار زیر رو انجام بدم
1. یک string با فرمت xml رو توی xmlReader بخونم
2. یک string با فرمت xml رو توی textReader بخونم
هر دوی این کارها برای اینه که یک جوری یک string با فرمت xml رو توی dataset با استفاده از متد xmlREader بخونم.اگه راه حل بهتری به نظرتون می رسه که چه بهتر.

قسمت دوم:
اگه میشه توضیح بدید چطوری می تونم یکی از دو کار زیر رو انجام بدم
3. محتویات dataSet رو توی یک xmlWriter بنویسم و آن را به string تبدیل کنم
4. محتویات dataSet رو توی یک textWriter بنویسم و آن را به string تبدیل کنم
هر دوی این کارها برای اینه که یک جوری محتویات dataset رو با فرمت xml توی یک string ذخیره کنم

حالا اگر کسی راه حل بهتری برای modify کردن attribute های element های xml که توی یک string قرار گرفته سراغ داره که دیگه از همش بهتره. نمونه محتویات string:

<ROOT>
<b t="1" p="789"/>
<b t="2" p="645"/>
<b t="3" p="456"/>
<b t="4" p="546"/>
</ROOT>
شرمنده که زیاد شد :embr:

Farhad.B.S
چهارشنبه 24 فروردین 1384, 14:53 عصر
کلاس های XmlReader ، TextReader ، XmlWriter ، TextWriter همگی کلاس های abstract هستند.
برای کارکردن و استفاده از این کلاس ها میبایست از فرزندان این کلاس ها مثل StringWriter یا XmlTextReader استفاده کنی.

در مورد بخش اول :
یک StringReader ایجاد میکنی ، این کلاس استرینگی رو که قراره داخلش ریخته بشه به عنوان پارامتر در متد سازندش دریافت میکنه .
حالا میتونی اینStringReader رو به متد ReadXml دیتاست پاس بدی.


در مورد بخش دوم :

Dim sb As New StringBuilder()
Dim w As New (sb)
Dim writer As New XmlTextWriter(w);
dataset.WriteXml(writer,XmlWriteMode.WriteSchema)
MessageBox.Show(sb.ToString())


حالا اگر کسی راه حل بهتری برای modify کردن attribute های element های xml که توی یک string قرار گرفته سراغ داره که دیگه از همش بهتره.
خوب اینو اول میگفتی که من این داستانارو تعریف نکنم :wink:
برای اینجور کارا بهترین گزینه کلاس XmlDocument هستش ،
یه نمونه برای ویرایش attribute ها :

Dim doc As New XmlDocument()
doc.Load(YourXmlReader) 'or something else
doc("ROOT")("b").Attributes("t").InnerText = "new value"

titbasoft
دوشنبه 26 اردیبهشت 1384, 16:13 عصر
این هم یک نمونه خوندن فایل xml ساده که فقط یک child به نام b زیر ROOT داره و 2 تا attribute هم به نام های k و t داره:
نمونه node های آن:

<ROOT>
<b k="1" t="23"/>
<b k="2" t="34"/>
</ROOT>

و کد مورد نظر: فرض کنید محتویات فایل XML درون متغیر InputXMLString خونده شده


If Trim(InputXMLString) <> "" Then
Dim xd As New Xml.XmlDocument
xd.LoadXml(InputXMLString)

Dim n As Xml.XmlElement = xd("ROOT")("b")
While Not IsNothing(n)
response.write ("k:" & n.Attributes("k").InnerText & " t: " & n.Attributes("t").InnerText & "<BR>")
n = n.NextSibling
End While
xd.save(filename)
END IF