معلومة ::: Navigate Xml File By XPath Navigator - RaggiTech - 06-10-12
كاتب الموضوع : 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
معلومة ::: Navigate Xml File By XPath Navigator - RaggiTech - 06-10-12
الآن هنبدأ نتصفح عنصر معين ولنري هذا الكود
كود :
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
ونبدأ فى عرض بيانات العنصر - صف صف
معلومة ::: Navigate Xml File By XPath Navigator - RaggiTech - 06-10-12
فى المثال السابق تصفحنا عنصر محدد
لكن ماذا لو أردنا عرض جزء 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())
معلومة ::: Navigate Xml File By XPath Navigator - RaggiTech - 06-10-12
ممكن تجعل التصفح يعود لك بعدد السجلات التى وجدت بالشرط السايق
//personal_data[@id='ID00234']
نستخدم الدالة Count للعنصر
كود :
MsgBox(ite.Count())
معلومة ::: Navigate Xml File By XPath Navigator - RaggiTech - 06-10-12
ماذا لو أردت مجموع حقل معين
لنري هذا الكود
كود :
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 ثم عرضنا النتيجة فى رسالة
|