تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معلومة ::: Navigate Xml File By XPath Navigator
#1
كاتب الموضوع : BADRMEDIA



أحياناً ممكن نحفظ جداول بيانات فى صورة Xml لكن كيف نتصفح هذه البيانات بطريقة من الطرق

سنتعرف على العنصر XPath

لنقوم بذلك

أريدك أن تنشأ ملف Xml على القرص المحلي C مباشرة باسم BADRMEDIA.Xml

وتجعل محتواه هذا الكود



كود :
[color=#000080]<?xml version=[COLOR=#0000ff]"1.0"[/color] encoding=[color=#0000ff]"utf-8"[/color]?>[/COLOR]
[color=#000080]<address_list>[/color]
[color=#000080]<personal_data id=[COLOR=#0000ff]"ID12345"[/color]>[/COLOR]
[color=#000080]<zip>[/color]123-4567[color=#000080]</zip>[/color]
[color=#000080]<address>[/color]VB4ARAB[color=#000080]</address>[/color]
[color=#000080]<name>[/color]nono[color=#000080]</name>[/color]
[color=#000080]<age>[/color]34[color=#000080]</age>[/color]
[color=#000080]</personal_data>[/color]
[color=#000080]<personal_data id=[COLOR=#0000ff]"ID00234"[/color]>[/COLOR]
[color=#000080]<zip>[/color]765-4321[color=#000080]</zip>[/color]
[color=#000080]<address>[/color]BADRMEDIA[color=#000080]</address>[/color]
[color=#000080]<name>[/color]OzOz[color=#000080]</name>[/color]
[color=#000080]<age>[/color]28[color=#000080]</age>[/color]
[color=#000080]</personal_data>[/color]
[color=#000080]<personal_data id=[COLOR=#0000ff]"ID32401"[/color]>[/COLOR]
[color=#000080]<zip>[/color]000-1111[color=#000080]</zip>[/color]
[color=#000080]<address>[/color]AHMED[color=#000080]</address>[/color]
[color=#000080]<name>[/color]ANDY[color=#000080]</name>[/color]
[color=#000080]<age>[/color]40[color=#000080]</age>[/color]
[color=#000080]</personal_data>[/color]
[color=#000080]</address_list>[/color]



كيف نقوم بربط التصفح بهذا الملف

نضع زر امر Button ونضع هذا الكود تحت الحدث له



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try

Dim xmlDoc As New System.Xml.XPath.XPathDocument("C:\BADRMEDIA.xml")

Dim xNavi As System.Xml.XPath.XPathNavigator = _
xmlDoc.CreateNavigator()

Catch ex As Exception
MsgBox("" & ex.Message & "", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "BADRMEDIA SoftWare ")
End Try

End Sub

استخدمنا العنصر XPathDocument من داخل العنصر XPath لربطه بملف Xml

ثم استخدمنا العنصر XPathNavigator ليقوم بالتصفح من داخل العنصر XPath

}}}}
تم الشكر بواسطة:
#2
الآن هنبدأ نتصفح عنصر معين ولنري هذا الكود



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try

Dim xmlDoc As New System.Xml.XPath.XPathDocument("C:\BADRMEDIA.xml")

Dim xNavi As System.Xml.XPath.XPathNavigator = _
xmlDoc.CreateNavigator()


' الجزء الجديد

Dim ite As System.Xml.XPath.XPathNodeIterator = _
xNavi.Evaluate("//personal_data/name")

While (ite.MoveNext())
MsgBox(ite.Current.ToString())
End While

Catch ex As Exception
MsgBox("" & ex.Message & "", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "BADRMEDIA SoftWare ")
End Try

End Sub

استخدمنا العنصر XPathNodeIterator لنربطه بعنصر من ملف التصفح

//personal_data/name

ونبدأ فى عرض بيانات العنصر - صف صف




}}}}
تم الشكر بواسطة:
#3
فى المثال السابق تصفحنا عنصر محدد

لكن ماذا لو أردنا عرض جزء Xml بدلالة عنصر محدد

ممكن ذلك لنري هذا الكود


كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try

Dim xmlDoc As New System.Xml.XPath.XPathDocument("C:\BADRMEDIA.xml")

Dim xNavi As System.Xml.XPath.XPathNavigator = _
xmlDoc.CreateNavigator()

Dim ite As System.Xml.XPath.XPathNodeIterator = _
xNavi.Evaluate("//personal_data[@id='ID00234']")


While (ite.MoveNext())
MsgBox(ite.Current.InnerXml())
End While

Catch ex As Exception
MsgBox("" & ex.Message & "", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "BADRMEDIA SoftWare ")
End Try

End Sub

فى عرض التصفح حددنا التصفح بدلالة معينة وهى //personal_data[@id='ID00234']

ولعرض جزء Xml نستخدم الدالة InnerXml


كود :
MsgBox(ite.Current.InnerXml())
}}}}
تم الشكر بواسطة:
#4
ممكن تجعل التصفح يعود لك بعدد السجلات التى وجدت بالشرط السايق

//personal_data[@id='ID00234']


نستخدم الدالة Count للعنصر


كود :
MsgBox(ite.Count())





}}}}
تم الشكر بواسطة:
#5
ماذا لو أردت مجموع حقل معين

لنري هذا الكود



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try

Dim xmlDoc As New System.Xml.XPath.XPathDocument("C:\BADRMEDIA.xml")

Dim xNavi As System.Xml.XPath.XPathNavigator = _
xmlDoc.CreateNavigator()

Dim intSum = xNavi.Evaluate("sum(//personal_data/age/text())")
MsgBox("مجموع الأعمار" & intSum)

Catch ex As Exception
MsgBox("" & ex.Message & "", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.MsgBoxRight, "BADRMEDIA SoftWare ")
End Try

End Sub


جعلنا التصفح بمجموع حقل العمر Age ثم عرضنا النتيجة فى رسالة

}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  معلومة ::: ListBox Blue Sky 14 2,401 14-11-16, 11:32 PM
آخر رد: فارس جراح
  File Signature silverlight 5 289 08-11-16, 09:34 AM
آخر رد: myalsailamy
  [مقال] Check the file format of an Image silverlight 3 890 28-05-14, 05:02 PM
آخر رد: Sajad
  save rtf file in database محمد عمر مصطفى 0 747 21-12-13, 02:50 AM
آخر رد: محمد عمر مصطفى
  معلومة مهمه فى المصفوفات ali.alfoly 2 792 30-08-13, 02:25 AM
آخر رد: ali.alfoly
  من المنتدى القديم - معلومة ::: ProgressBar ( للاخ BADRMEDIA ) المبرمج علي نوري 2 1,266 23-08-13, 11:17 PM
آخر رد: nin9e
  معلومة :: تعلم كيف تحفظ صورة في My.Settings بدون الإحتياج إلى مسارها! أسامة أحمد 3 1,016 16-12-12, 06:25 PM
آخر رد: 3amo
  من المنتدى القديم - معلومة ::: CheckBox ( للاخ BADRMEDIA ) المبرمج علي نوري 1 571 30-11-12, 05:54 PM
آخر رد: مبرمج أوتار
  معلومة :: الحل لمشكلة الخطأ في الكود For Each i As Button In Me.Controls Aly El-Haddad 2 680 10-11-12, 09:15 PM
آخر رد: Mr. DotNet
  معلومة : Partial Class RaggiTech 1 543 06-10-12, 11:03 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم