Jadual Kandungan
 
1、LINQ to XML类
2、XElement类
3、XAttribute类 
4、XDocument类
 
二、LINQ to XML编程概念
1、加载已有的xml
2、保存xml
3、创建xml
4、遍历xml
5、操纵xml
6、处理属性
本文总结
Rumah pembangunan bahagian belakang Tutorial XML/RSS LINQ to XML 编程基础的图文代码详细介绍

LINQ to XML 编程基础的图文代码详细介绍

Mar 07, 2017 pm 04:55 PM

 

1、LINQ to XML类

 

2010-05-05_151848

 

以下的代码演示了如何使用LINQ to XML来快速创建一个xml:


隐藏行号 复制代码 创建 XML

public static void CreateDocument()
{
    string path = @"d:\website";

    XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
                                   new XElement("Root", "root"));

    xdoc.Save(path);
}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>root</Root>
Salin selepas log masuk

2、XElement类

XElement 类是 LINQ to XML 中的基础类之一。 它表示一个 XML 元素。 可以使用该类创建元素;更改元素内容;添加、更改或删除子元素;向元素中添加属性;或以文本格式序列化元素内容。 还可以与 System.Xml 中的其他类(例如 XmlReader、XmlWriter 和 XslCompiledTransform)进行互操作。

使用LINQ to XML创建xml文档有很多种方式,具体使用哪种方法要根据实际需要。而创建xml文档最简单、最常见的方式是使用XElement类。以下的代码演示了如何使用XElement类创建一个xml文档:

显示行号 复制代码 这是一段程序代码。

public static void CreateCategories()
{
    string path = @"d:\website";

    XElement root = new XElement("Categories",

        new XElement("Category",

            new XElement("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Beverages")
            ),

        new XElement("Category",

            new XElement("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Condiments")

            ),

        new XElement("Category",

            new XElement("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Confections")

            )

       );

    root.Save(path);

}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>
<Categories>
  <Category>
    <CategoryID>57485174-46fc-4e8c-8d98-d25b53d504a1</CategoryID>
    <CategoryName>Beverages</CategoryName>
  </Category>
  <Category>
    <CategoryID>1474dde1-8014-48f7-b093-b47ca5d5b770</CategoryID>
    <CategoryName>Condiments</CategoryName>
  </Category>
  <Category>
    <CategoryID>364224e0-e002-4939-90fc-0fd93e0cf35b</CategoryID>
    <CategoryName>Confections</CategoryName>
  </Category>
</Categories>
Salin selepas log masuk


XElement类包含了许多方法,这些方法使得处理xml变得轻而易举。有关这些方法请参照MSDN。

其中,Save、CreateReader、ToString和WriteTo方法是比较常用的三个方法:

2010-05-05_152909

3、XAttribute类

XAttribute类用来处理元素的属性,属性是与元素相关联的“名称-值”对,每个元素中不能有名称重复的属性。使用XAttribute类与使用XElement类的操作十分相似,下面的示例演示了如何在创建xml树时为其添加一个属性:

显示行号 复制代码 这是一段程序代码。

public static XElement CreateCategoriesByXAttribute()
{
    XElement root = new XElement("Categories",

        new XElement("Category",

            new XAttribute("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Beverages")

            ),

        new XElement("Category",

            new XAttribute("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Condiments")

            ),

        new XElement("Category",

            new XAttribute("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Confections")

            )
       );

    root.Save(path);

    return root;
}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>
<Categories>
  <Category CategoryID="a6d5ef04-3f83-4e00-aeaf-52444add7570">
    <CategoryName>Beverages</CategoryName>
  </Category>
  <Category CategoryID="67a168d5-6b22-4d82-9bd4-67bec88c2ccb">
    <CategoryName>Condiments</CategoryName>
  </Category>
  <Category CategoryID="17398f4e-5ef1-48da-8a72-1c54371b8e76">
    <CategoryName>Confections</CategoryName>
  </Category>
</Categories>
Salin selepas log masuk

XAttribute类的方法比较少,常用的三个是:

2010-05-05_153201

以下的示例使用Remove来删除第一个元素的CategoryID属性:

显示行号 复制代码 这是一段程序代码。

public static void RemoveAttribute()
{

    XElement xdoc = CreateCategoriesByXAttribute();

    XAttribute xattr = xdoc.Element("Category").Attribute("CategoryID");

    xattr.Remove();

    xdoc.Save(path);

}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>
<Categories>
  <Category>
    <CategoryName>Beverages</CategoryName>
  </Category>
  <Category CategoryID="5c311c1e-ede5-41e5-93f7-5d8b1d7a0346">
    <CategoryName>Condiments</CategoryName>
  </Category>
  <Category CategoryID="bfde8db5-df84-4415-b297-cd04d8db9712">
    <CategoryName>Confections</CategoryName>
  </Category>
</Categories>
Salin selepas log masuk

作为尝试,试一试以下删除属性的方法:

public static void RemoveAttributeByDoc()
{

    XElement xdoc = CreateCategoriesByXAttribute();

    XAttribute xattr = xdoc.Attribute("CategoryID");

    xattr.Remove();

    xdoc.Save(path);

}
Salin selepas log masuk

运行该示例将会抛出一个空引用异常,因为元素Categories没有一个叫做CategoryID的属性。

4、XDocument类

XDocument类提供了处理xml文档的方法,包括声明、注释和处理指令。一个XDocument对象可以包含以下内容:

2010-05-05_161214

下面的示例创建了一个简单的xml文档,它包含几个元素和一个属性,以及一个处理指令和一些注释:

public static void CreateXDocument()
      {

          XDocument xdoc = new XDocument(

                  new XProcessingInstruction("xml-stylesheet", "title=&#39;EmpInfo&#39;"),

                  new XComment("some comments"),

                  new XElement("Root",

                          new XElement("Employees",

                                  new XElement("Employee",

                                          new XAttribute("id", "1"),

                                          new XElement("Name", "Scott Klein"),

                                          new XElement("Title", "Geek"),

                                          new XElement("HireDate", "02/05/2007"),

                                          new XElement("Gender", "M")

                                      )

                              )

                      ),

                  new XComment("more comments")

              );

          xdoc.Save(path);

      }
Salin selepas log masuk


运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet title=&#39;EmpInfo&#39;?>
<!--some comments-->
<Root>
  <Employees>
    <Employee id="1">
      <Name>Scott Klein</Name>
      <Title>Geek</Title>
      <HireDate>02/05/2007</HireDate>
      <Gender>M</Gender>
    </Employee>
  </Employees>
</Root>
<!--more comments-->
Salin selepas log masuk

XDocument类包含多个与XElement类相同的方法,具体内容可以参阅MSDN。需要注意的是,处理节点和元素的大部分功能都可以通过XElement获得,只有当绝对需要文档层次的处理能力,以及需要访问注释、处理指令和声明时,才有使用XDocument类的必要。

创建了xml文档后,可以使用NodesAfterSelf方法返回指定的XElement元素之后的所有同级元素。需要注意的是,此方法只包括返回集合中的同级元素,而不包括子代。此方法使用延迟执行。以下代码演示了这一过程:

显示行号 复制代码 这是一段程序代码。

public static void NodesAfterSelf()
{

    XElement root = new XElement("Categories",
        new XElement("Category",
                new XElement("CategoryID", Guid.NewGuid()),
                new XElement("CategoryName", "食品"),
                new XElement("Description", "可以吃的东西")
            )
        );

    foreach (var item in root.Element("Category").Element("CategoryID").NodesAfterSelf())
    {
        Console.WriteLine((item as XElement).Value);
    }
}
Salin selepas log masuk

二、LINQ to XML编程概念

本节将介绍LINQ to XML编程的相关概念,例如如何加载xml、创建全新xml、操纵xml的信息以及遍历xml文档。

1、加载已有的xml

使用LINQ to XML加载xml可以从多种数据源获得,例如字符串、XmlReader、TextReader或文件。

下面的示例演示了如何从文件中加载xml:

public static void LoadFromFile()
{

    XElement root = XElement.Load(path);

    Console.WriteLi
Salin selepas log masuk


也可以使用Parse方法从一个字符串加载xml:

public static void LoadFromString()
    {

        XElement root = XElement.Parse(@"

    <Categories>

      <Category>

        <CategoryID>1</CategoryID>

        <CategoryName>Beverages</CategoryName>

        <Description>Soft drinks, coffees, teas, beers, and ales</Description>

      </Category>

    </Categories>

");

        Console.WriteLine(root.ToString());

    }
Salin selepas log masuk

2、保存xml

在前面的示例中曾多次调用XElement对象的Save方法来保存xml文档,在这里就不冗述了。

3、创建xml

在前面的示例中曾多次调用XElement对象的构造函数来创建xml文档,在这里就不冗述了。需要说明的是,在使用LINQ to XML创建xml文档时,会有代码缩进,这使代码的可读性大大加强。

4、遍历xml

使用LINQ to XML在xml树中遍历xml是相当简单的。只需要使用XElement和XAttribute类中所提供的方法。Elements和Element方法提供了定位到某个或某些元素的方式。下面的示例演示了如何遍历xml树,并获取指定元素的方式:

public static void Enum()

{

    XElement root = new XElement("Categories");

    using (NorthwindDataContext db = new NorthwindDataContext())

    {

        root.Add(

                db.Categories

                .Select

                (

                    c => new XElement

                    (

                        "Category"

                        , new XElement("CategoryName", c.CategoryName)

                    )

                )

            );

    }

    foreach (var item in root.Elements("Category"))
    {
        Console.WriteLine(item.Element("CategoryName").Value);

    }

}
Salin selepas log masuk

上述代码运行的结果为:

clip_image002_thumb_1

是不是很简单呢?Nodes()、Elements()、Element(name)和Elements(name)方法为xml树的导航提供了基本功能。

5、操纵xml

LINQ to XML一个重要的特性是能够方便地修改xml树,如添加、删除、更新和复制xml文档的内容。

I.插入

使用XNode类的插入方法可以方便地向xml树添加内容:

2010-05-05_162103

在下面的示例中,使用AddAfterSelf方法向现有xml中添加一个新节点:

public static void AddAfterSelf()

{

    XElement root = XElement.Parse(@"

        <Categories>

          <Category>

            <CategoryID>1</CategoryID>

            <CategoryName>Beverages</CategoryName>

            <Description>Soft drinks, coffees, teas, beers, and ales</Description>

          </Category>

        </Categories>

    ");

    XElement xele = root.Element("Category").Element("CategoryName");

    xele.AddAfterSelf(new XElement("AddDate", DateTime.Now));

    root.Save(path);

}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category>

    <CategoryID>1</CategoryID>

    <CategoryName>Beverages</CategoryName>

    <AddDate>2010-01-31T03:08:51.813736+08:00</AddDate>

    <Description>Soft drinks, coffees, teas, beers, and ales</Description>

  </Category>

</Categories>
Salin selepas log masuk

当需要添加一个元素到指定节点之前时,可以使用AddBeforeSelf方法。

II.更新

在LINQ to XML中更新xml内容可以使用以下几种方法:

2010-05-05_162242

在下面的示例中使用了ReplaceWith与SetElementValue方法对xml进行了更新操作:

public static void Update()
{

    XElement root = XElement.Parse(@"
                                   <Categories>
                                      <Category>
                                        <CategoryID>1</CategoryID>
                                        <CategoryName>Beverages</CategoryName>
                                        <Description>Soft drinks, coffees, teas, beers, and ales</Description>
                                      </Category>
                                    </Categories>
                                  ");

    root.Element("Category").Element("CategoryID").ReplaceWith(new XElement("ID", "2"));
    root.Element("Category").SetElementValue("CategoryName", "test data");
    root.Save(path);
}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category>

    <ID>2</ID>

    <CategoryName>test data</CategoryName>

    <Description>Soft drinks, coffees, teas, beers, and ales</Description>

  </Category>

</Categories>
Salin selepas log masuk

III.删除

可以使用Remove(XElement)与RemoveAll方法来删除xml。

在下面的示例中,使用了RemoveAll方法:

}
  public static void Remove()
  {
      string path = @"d:\";

      XElement root = XElement.Parse(@"
                                  <Categories>

                                    <Category>

                                      <CategoryID>1</CategoryID>

                                      <CategoryName>Beverages</CategoryName>

                                      <Description>Soft drinks, coffees, teas, beers, and ales</Description>

                                    </Category>

                                  </Categories>

                                ");

      root.RemoveAll();

      root.Save(path);

  }
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories />
Salin selepas log masuk

在下面的示例中,使用了Remove方法删除了xml的Description元素:

public static void Remove()
{

    XElement root = XElement.Parse(@"
                                <Categories>
                                  <Category>
                                    <CategoryID>1</CategoryID>
                                    <CategoryName>Beverages</CategoryName>
                                    <Description>Soft drinks, coffees, teas, beers, and ales</Description>
                                  </Category>
                                </Categories>
                                ");

    root.Element("Category").Element("Description").Remove();
    root.Save(path);
}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category>

    <CategoryID>1</CategoryID>

    <CategoryName>Beverages</CategoryName>

  </Category>

</Categories>
Salin selepas log masuk

6、处理属性

I.添加

LINQ to XML添加属性与添加元素师类似的,可以使用构造函数或者Add方法来添加属性:

public static void AddAttribute()
{
    XElement root = new XElement("Categories",
        new XElement("Category",
            new XAttribute("CategoryID", "1"),
            new XElement("CategoryName", "Beverages"),
            new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
        )
    );

    root.Element("Category").Add(new XAttribute("AddDate", DateTime.Now.ToShortDateString()));
    root.Save(path);
}
Salin selepas log masuk

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category CategoryID="1" AddDate="2010-01-31">

    <CategoryName>Beverages</CategoryName>

    <Description>Soft drinks, coffees, teas, beers, and ales</Description>

  </Category>

</Categories>
Salin selepas log masuk

II.检索

检索属性可以使用Attribute(name)方法:

显示行号 复制代码 这是一段程序代码。

public static void SelectAttribute()
{
    XElement root = new XElement("Categories",
        new XElement("Category",
            new XAttribute("CategoryID", "1"),
            new XElement("CategoryName", "Beverages"),
            new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
        )
    );

    XAttribute xattr = root.Element("Category").Attribute("CategoryID");
    Console.WriteLine(xattr.Name);
    Console.WriteLine(xattr.Value);
}
Salin selepas log masuk

上述代码的运行结果为:

CategoryID
1
Salin selepas log masuk

本文总结

本文介绍了LINQ to XML的编程基础,即System.Xml.Linq命名空间中的多个LINQ to XML类,这些类都是LINQ to XML的支持类,它们使得处理xml比使用其他的xml工具容易得多。在本文中,着重介绍的是XElement、XAttribute和XDocument。 

 以上就是LINQ to XML 编程基础的图文代码详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bolehkah saya membuka fail XML menggunakan PowerPoint? Bolehkah saya membuka fail XML menggunakan PowerPoint? Feb 19, 2024 pm 09:06 PM

Bolehkah fail XML dibuka dengan PPT? XML, Extensible Markup Language (Extensible Markup Language), ialah bahasa markup universal yang digunakan secara meluas dalam pertukaran data dan penyimpanan data. Berbanding dengan HTML, XML lebih fleksibel dan boleh menentukan tag dan struktur datanya sendiri, menjadikan penyimpanan dan pertukaran data lebih mudah dan bersatu. PPT, atau PowerPoint, ialah perisian yang dibangunkan oleh Microsoft untuk membuat pembentangan. Ia menyediakan cara yang komprehensif untuk

Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML Aug 07, 2023 am 11:33 AM

Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML XML (eXtensibleMarkupLanguage) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data. Apabila memproses data XML, kadangkala kita perlu menggabungkan berbilang fail XML menjadi satu, atau mengalih keluar data pendua. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan penggabungan dan penyahduplikasian data XML, dan memberikan contoh kod yang sepadan. 1. Penggabungan data XML Apabila kita mempunyai berbilang fail XML, kita perlu menggabungkannya

Menapis dan menyusun data XML menggunakan Python Menapis dan menyusun data XML menggunakan Python Aug 07, 2023 pm 04:17 PM

Melaksanakan penapisan dan pengisihan data XML menggunakan Python Pengenalan: XML ialah format pertukaran data yang biasa digunakan yang menyimpan data dalam bentuk teg dan atribut. Apabila memproses data XML, kami selalunya perlu menapis dan mengisih data. Python menyediakan banyak alat dan perpustakaan yang berguna untuk memproses data XML. Artikel ini akan memperkenalkan cara menggunakan Python untuk menapis dan mengisih data XML. Membaca fail XML Sebelum kita mula, kita perlu membaca fail XML. Python mempunyai banyak perpustakaan pemprosesan XML,

Tukar data XML kepada format CSV dalam Python Tukar data XML kepada format CSV dalam Python Aug 11, 2023 pm 07:41 PM

Tukar data XML dalam Python kepada format CSV XML (ExtensibleMarkupLanguage) ialah bahasa penanda boleh diperluas yang biasa digunakan untuk penyimpanan dan penghantaran data. CSV (CommaSeparatedValues) ialah format fail teks dipisahkan koma yang biasa digunakan untuk import dan eksport data. Semasa memproses data, kadangkala data XML perlu ditukar kepada format CSV untuk analisis dan pemprosesan yang mudah. Python adalah yang kuat

Import data XML ke dalam pangkalan data menggunakan PHP Import data XML ke dalam pangkalan data menggunakan PHP Aug 07, 2023 am 09:58 AM

Mengimport data XML ke dalam pangkalan data menggunakan PHP Pengenalan: Semasa pembangunan, kita sering perlu mengimport data luaran ke dalam pangkalan data untuk pemprosesan dan analisis selanjutnya. Sebagai format pertukaran data yang biasa digunakan, XML sering digunakan untuk menyimpan dan menghantar data berstruktur. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengimport data XML ke dalam pangkalan data. Langkah 1: Menghuraikan fail XML Mula-mula, kita perlu menghuraikan fail XML dan mengekstrak data yang diperlukan. PHP menyediakan beberapa cara untuk menghuraikan XML, yang paling biasa digunakan ialah menggunakan Mudah

Python melaksanakan penukaran antara XML dan JSON Python melaksanakan penukaran antara XML dan JSON Aug 07, 2023 pm 07:10 PM

Python melaksanakan penukaran antara XML dan JSON Pengenalan: Dalam proses pembangunan harian, kita selalunya perlu menukar data antara format yang berbeza. XML dan JSON ialah format pertukaran data biasa Dalam Python, kita boleh menggunakan pelbagai perpustakaan untuk menukar antara XML dan JSON. Artikel ini akan memperkenalkan beberapa kaedah yang biasa digunakan, dengan contoh kod. 1. Untuk menukar XML kepada JSON dalam Python, kita boleh menggunakan modul xml.etree.ElementTree

Mengendalikan ralat dan pengecualian dalam XML menggunakan Python Mengendalikan ralat dan pengecualian dalam XML menggunakan Python Aug 08, 2023 pm 12:25 PM

Mengendalikan Ralat dan Pengecualian dalam XML Menggunakan Python XML ialah format data yang biasa digunakan untuk menyimpan dan mewakili data berstruktur. Apabila kami menggunakan Python untuk memproses XML, kadangkala kami mungkin menghadapi beberapa ralat dan pengecualian. Dalam artikel ini, saya akan memperkenalkan cara menggunakan Python untuk mengendalikan ralat dan pengecualian dalam XML, dan menyediakan beberapa kod sampel untuk rujukan. Gunakan pernyataan cuba-kecuali untuk menangkap ralat penghuraian XML Apabila kami menggunakan Python untuk menghuraikan XML, kadangkala kami mungkin menghadapi beberapa

Python menghuraikan aksara khas dan urutan melarikan diri dalam XML Python menghuraikan aksara khas dan urutan melarikan diri dalam XML Aug 08, 2023 pm 12:46 PM

Python menghuraikan aksara khas dan jujukan melarikan diri dalam XML XML (eXtensibleMarkupLanguage) ialah format pertukaran data yang biasa digunakan untuk memindahkan dan menyimpan data antara sistem yang berbeza. Semasa memproses fail XML, anda sering menghadapi situasi yang mengandungi aksara khas dan urutan melarikan diri, yang boleh menyebabkan ralat penghuraian atau salah tafsiran data. Oleh itu, apabila menghuraikan fail XML menggunakan Python, kita perlu memahami cara mengendalikan aksara khas dan urutan melarikan diri ini. 1. Watak istimewa dan

See all articles