encoding/xml
تعامَل مع XML
encoding/xml درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
التعامل مع XML
XML تنسيق مطوّل قائم على الوسوم، ولا يزال شائعًا في الأنظمة والإعدادات القديمة. وتُجري حزمة Go encoding/xml تسلسل XML وفكّه، بطريقة تحاكي حزمة json.
التسلسل إلى XML
تحوّل xml.Marshal قيمة Go إلى بايتات XML.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
b, _ := xml.Marshal(User{"Ann", 30})
fmt.Println(string(b))
}وسوم XML
يتحكم وسم xml في أسماء العناصر، تمامًا كما تتحكم وسوم json في مفاتيح JSON.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.Marshal(User{"Ann"})
fmt.Println(string(b))
}العنصر الجذري باستخدام XMLName
يحدد حقل من النوع xml.Name واسمه XMLName اسم العنصر الجذري.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
XMLName xml.Name "xml:\"user\""
Name string "xml:\"name\""
}
func main() {
b, _ := xml.Marshal(User{Name: "Ann"})
fmt.Println(string(b))
}السمات
أضيفوا ,attr إلى الوسم لعرض الحقل كسمة XML بدلًا من عنصر فرعي.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
XMLName xml.Name "xml:\"user\""
ID int "xml:\"id,attr\""
Name string "xml:\"name\""
}
func main() {
b, _ := xml.Marshal(User{ID: 7, Name: "Ann"})
fmt.Println(string(b))
}فك تسلسل XML
تحلل xml.Unmarshal بايتات XML إلى مؤشر، مع مطابقة أسماء العناصر بالوسوم.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
var u User
xml.Unmarshal([]byte("<User><name>Bob</name></User>"), &u)
fmt.Println(u.Name)
}العناصر المتداخلة
تُطابَق البنى المتداخلة مع عناصر XML متداخلة، فتُنشئ شجرة.
package main
import (
"encoding/xml"
"fmt"
)
type Address struct {
City string "xml:\"city\""
}
type User struct {
Name string "xml:\"name\""
Address Address "xml:\"address\""
}
func main() {
b, _ := xml.Marshal(User{"Ann", Address{"Rome"}})
fmt.Println(string(b))
}XML منسقة
تنسّق xml.MarshalIndent الإخراج باستخدام المسافات البادئة لتسهيل قراءته.
package main
import (
"encoding/xml"
"fmt"
)
type User struct {
Name string "xml:\"name\""
}
func main() {
b, _ := xml.MarshalIndent(User{"Ann"}, "", " ")
fmt.Println(string(b))
}العناصر المتكررة
يصبح حقل الشريحة سلسلةً من عناصر XML المتكررة، عنصرًا لكل عنصر في الشريحة.
package main
import (
"encoding/xml"
"fmt"
)
type List struct {
Items []string "xml:\"item\""
}
func main() {
b, _ := xml.Marshal(List{Items: []string{"a", "b"}})
fmt.Println(string(b))
}مقارنة JSON وXML
واجهتا API متشابهتان: Marshal وUnmarshal وMarshalIndent ووسوم البنى. يضيف XML السمات ومفهوم XMLName للعنصر الجذري. فضّلوا JSON لواجهات API الجديدة، وXML للأنظمة القديمة.
إعلان الرأس
يحتوي الثابت xml.Header على سلسلة إعلان XML القياسية التي يمكنكم إضافتها إلى بداية الإخراج للحصول على مستندات مكتملة.
package main
import (
"encoding/xml"
"fmt"
)
func main() {
fmt.Print(xml.Header)
}تحقق سريع
ما الذي يفعله الخيار ,attr في وسم بنية xml؟
مراجعة
encoding/xml:
- تحاكي
xml.Marshal/Unmarshalواجهة json API - تسمّي وسوم xml العناصر؛ ويحوّل
,attrالحقول إلى سمات - يحدد
XMLNameالعنصر الجذري؛ وتكرر الشرائح العناصر
الأسئلة الشائعة
هل درس «encoding/xml» مجاني؟
نعم — نص درس «encoding/xml» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «encoding/xml»؟
تعامَل مع XML تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «encoding/xml»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.