XML各种操作方法汇集

 
Imports System.IO
Imports System.Xml

Module Module1

    Sub Main()
        'ReadAllData()
        'DocReadAllData()
        'ListAllName()
        'ListNameofId()
        'ListFemale()
        'ListTelephone()
        ' ListDetailByAddress()
        'ListNestedZip()
        'ListByOrder()
        'CreateXml()
        'ReadXmlFile()
        'FindElementByPosion(1)
        'ListTake()
        'FindXleCount()
        'XeleAdd()
        'XeleReplace()
        'XeleDelAttrib()
        'XeleDel()
        'DelXeleByposion()
        ' XeleSave()

        SetPhoneValue()
        Console.ReadLine()
    End Sub

    '用xelement元素方法来读取数据
    Private Sub ReadAllData()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")
        Dim Employees As IEnumerable(Of XElement) = Xelement.Elements

        '读XML数据
        For Each employee In Employees
            Console.WriteLine(employee)
        Next

        Console.ReadLine()
    End Sub

    '用XDOCUMENT 方法来读取数据
    Private Sub DocReadAllData()
        Dim Xdocument As XDocument = Xdocument.Load("..\..\test.xml")

        ' Dim Employees As IEnumerable(Of XElement) = Xdocument.Elements
        Dim Employees As IEnumerable(Of XElement) = Xdocument.Root.Elements
        '读XML数据
        For Each employee In Employees
            Console.WriteLine(employee)
        Next

        Console.ReadLine()
    End Sub

    '访问所顾员,并列出他们的名称 
    Private Sub ListAllName()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")
        Dim Employees As IEnumerable(Of XElement) = Xelement.Elements

        '读XML数据
        Console.WriteLine("所有成员名称 ...")
        For Each employee In Employees
            Console.WriteLine(employee.Element("Name").Value)
        Next

        Console.ReadLine()
    End Sub

    Private Sub ListNameofId()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")
        Dim Employees As IEnumerable(Of XElement) = Xelement.Elements

        '读XML数据
        For Each employee In Employees
            Console.WriteLine("{0}顾员的ID号:{1}", employee.Element("Name").Value,
                               employee.Element("EmpId").Value)
        Next

        Console.ReadLine()
    End Sub

    '访问所有顾员性别为女的
    Private Sub ListFemale()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")
        Dim Name =
            From nm In Xelement.Elements("Employee") Where
            CStr(nm.Element("Sex")) = "Female" Select nm

        For Each Xele As XElement In Name
            Console.WriteLine(Xele)
        Next

        Console.ReadLine()
    End Sub

    '列出所顾员中属性为家庭成员的电话号码
    Private Sub ListTelephone()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")
        Dim HomePhone =
            From PhoneTel In Xelement.Elements("Employee")
            Where CStr(PhoneTel.Element("Phone").Attribute("Type")) =
            "Home" Select PhoneTel

        For Each Xele As XElement In HomePhone
            Console.WriteLine(Xele.Element("Phone").Value)
        Next

        Console.ReadLine()
    End Sub

    Private Sub SetPhoneValue()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")
        Dim HomePhone =
            From PhoneTel In Xelement.Elements("Employee")
            Where CStr(PhoneTel.Element("Phone").Attribute("Type")) =
            "Home" Select PhoneTel

        For Each Xele As XElement In HomePhone
            '   Console.WriteLine(Xele.Element("Phone").Value)
            Console.WriteLine(Xele)
            Xele.Element("Phone").Value = "fffff"
        Next

        Console.WriteLine(Xelement)
        Console.ReadLine()
    End Sub

    Private Sub ListDetailByAddress()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")

        Dim Addresses = From Address In Xelement.Elements("Employee")
                        Where CStr(Address.Element("Address").Element("City")) = "Alta"
                        Select Address


        For Each Xele As XElement In Addresses
            Console.WriteLine(Xele)
        Next

        Console.ReadLine()
    End Sub

    Private Sub ListNestedZip()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")

        For Each Xele As XElement In Xelement.Descendants("Zip")
            Console.WriteLine(Xele.ToString)
        Next

        Console.ReadLine()
    End Sub

    Private Sub ListByOrder()
        Dim Xelement As XElement = Xelement.Load("..\..\test.xml")

        Dim Codes As IEnumerable(Of String) =
            From code In Xelement.Elements("Employee")
            Let Zip = CStr(code.Element("Address").Element("Zip"))
            Order By Zip
            Select Zip

        For Each zp As String In Codes
            Console.WriteLine(zp)
        Next

        Console.ReadLine()
    End Sub

    Private Sub CreateXml()
        Dim EmpNM As XNamespace = "urn:lst-emp:emp"
        Dim Xdoc As New XDocument(New XDeclaration("1.0", "UTF-16", Nothing),
                                   New XElement(EmpNM + "Employees",
                                                 New XElement("Employee",
                                                                New XComment("only 3 elements for demo purpose"),
                                                                New XElement("EmpId", "5"),
                                                                New XElement("Name", "Kimmy"),
                                                                New XElement("Sex", "Female"))))
        Dim sw As New StringWriter
        Dim xWrite As XmlWriter = XmlWriter.Create(sw)

        Xdoc.Save(sw)
        xWrite.Close()

        Xdoc.Save("c:\Something.xml")


        Console.WriteLine(sw)
        Console.ReadLine()



    End Sub

    Private Sub ReadXmlFile()
        Dim Xread As XmlReader = XmlReader.Create("..\..\test.xml")
        Dim Xele As XElement = XElement.Load(Xread)
        Console.WriteLine(Xele)
        Xread.Close()
    End Sub

    '查找指定位置的节点
    Private Sub FindElementByPosion(ByVal pPosition As Integer)
        Console.WriteLine("使用节点方法")
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Dim Emp = Xele.Descendants("Employee").ElementAt(0)
        Console.WriteLine(Emp)

        Console.WriteLine("-----------------")

        Console.WriteLine("使用文档方法")
        Dim Xdoc As XDocument = XDocument.Load("..\..\test.xml")
        Dim Emp1 = Xdoc.Descendants("Employee").ElementAt(2)
        Console.WriteLine(Emp1)

    End Sub

    Private Sub ListTake()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        'Dim Emps = Xele.Descendants("Employee").Take(2)           ’列出前两个节点
        'Dim Emps = Xele.Descendants("Employee").Skip(1).Take(2)    '跳过一个节点后,再列出前两个节点
        'Dim Emps = Xele.Descendants("Employee").Reverse.Take(2)   '列出最最后两个节点

        Dim Emps = Xele.Descendants("Employee").Reverse.Take(2).Reverse    '列出最最后两个节点

        '跳过一个节点后,再列出前两个节点
        For Each emp In Emps
            Console.WriteLine(emp.Element("EmpId").ToString + emp.Element("Name").ToString)
            Console.WriteLine(emp.Element("EmpId").Value + emp.Element("Name").Value)
        Next

    End Sub

    '按一定条件查询节点数目
    Private Sub FindXleCount()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")

        Dim StCnt = From Address In Xele.Elements("Employee")
        Where CStr(Address.Element("Address").Element("State") = "CA")
        Select Address

        Console.WriteLine("No of employees living in Ca state are {0}", stcnt.count)
    End Sub

    '节点添加
    Private Sub XeleAdd()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Xele.AddFirst(New XElement("Employee",
                                 New XElement("EmpId", 5),
                                 New XElement("Name", "Georage"),
                                 New XElement("Phone", "423-555-4242",
                                               New XAttribute("Type", "Home")
                                               )
                                 )
                  )
        Console.WriteLine(Xele)
    End Sub

    '节点内容的替换
    Private Sub XeleReplace()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")

        Dim Countries = Xele.Elements("Employee").Elements("Address").Elements("Country").ToList
        For Each cele As XElement In Countries
            cele.ReplaceNodes("United States of America ")
        Next

        Console.WriteLine(Xele)
    End Sub

    '移除节点的属性
    Private Sub XeleDelAttrib()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Dim Phone = Xele.Elements("Employee").Elements("Phone").ToList
        For Each pele As XElement In Phone
            pele.RemoveAttributes()
        Next

        Console.WriteLine(Xele)
    End Sub

    '删除节点的内容,也可以用来更新设备
    Private Sub XeleDel()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Dim Addr = Xele.Elements("Employee").ToList
        For Each addele As XElement In Addr
            addele.SetElementValue("Address", Nothing)
        Next

        Console.WriteLine(Xele)
    End Sub

    '删除节点按位置
    Private Sub DelXeleByposion()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Dim Emps = Xele.Descendants("Employee")
        Emps.Reverse.Take(2).Remove()

        Console.WriteLine(Xele)
    End Sub


    '保存节点内容
    Private Sub XeleSave()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Xele.Add(New XElement("Employee",
                  New XElement("EmpId", 5),
                  New XElement("Name", "George"),
                  New XElement("Sex", "Male"),
                  New XElement("Phone", "423-555-4242",
                                New XAttribute("Type", "Home")),
                  New XElement("Phone", "424-555-0545",
                                New XAttribute("Type", "Work")),
                  New XElement("Address",
                                New XElement("Street", "Fred Park"),
                                New XElement("City", "Acampo"),
                                New XElement("State", "CA"),
                                New XElement("Zip", "95220"),
                                New XElement("Country", "USA"))))

        Xele.Save("..\..\test.xml")
        Console.WriteLine(Xele)

    End Sub

    Private Sub ListData()
        Dim Xele As XElement = XElement.Load("..\..\test.xml")
        Dim a1() = {"a1", "a2", "a3", "a4"}
        Dim i As Integer = 0

        Xele.Save("..\..\test.xml")
        Console.WriteLine(Xele)
      

    End Sub

    Public Sub A1()
        Dim contacts As XElement =
            <contacts>
                <contact>
                    <name>Patrick Hines</name>
                    <phone type="home">206-555-0144</phone>
                    <phone type="work">425-555-0145</phone>
                </contact>
            </contacts>

        Console.WriteLine("Name: " & contacts...<name>.Value)

        Dim homePhone = From phone In contacts...<phone>
                        Select phone.Value

        Console.WriteLine("Home Phone = {0}", homePhone(0))

    End Sub


    '    Dim contact As XElement =
    '    <contact>
    '        <name>Patrick Hines</name>
    '        <phone type="home">206-555-0144</phone>
    '        <phone type="work">425-555-0145</phone>
    '    </contact>


    '    Dim types = contact.<phone>.Attributes("type")

    'For Each attr In types
    '  Console.WriteLine(attr.Value)
    'Next


    '    Dim contact As XElement =
    '    <contact>
    '        <name>Patrick Hines</name>
    '        <phone type="home">206-555-0144</phone>
    '        <phone type="work">425-555-0145</phone>
    '    </contact>

    '    Dim homePhone = From hp In contact.<phone>
    '                    Where contact.<phone>.@type = "home"
    '                    Select hp

    'Console.WriteLine("Home Phone = {0}", homePhone(0).Value)


    '    Dim contacts As XElement =
    '        <contacts>
    '            <contact>
    '                <name>Patrick Hines</name>
    '                <phone type="home">206-555-0144</phone>
    '            </contact>
    '            <contact>
    '                <name>Lance Tucker</name>
    '                <phone type="work">425-555-0145</phone>
    '            </contact>
    '        </contacts>

    '    Dim homePhone = From contact In contacts.<contact>
    '                    Where contact.<phone>.@type = "home"
    '                    Select contact.<phone>

    'Console.WriteLine("Home Phone = {0}", homePhone(0).Value)

End Module

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值