当前位置:编程学习 > C#/ASP.NET >>

vb.net解析xml文档,提取有效数据

小弟是新手,请大虾们帮忙!!
<xml version="1.0" encoding="UTF-8">
<Header>
    <Sender>MES</Sender>
    <Receiver>JK</Receiver>
    <ServiceName>MESSendBOM</ServiceName>
    <TimeStamp>2013-06-24 12:00:00</TimeStamp>
    <EventId>550E8400-E29B-11D4-A716-446655440000</EventId>
</Header>
<Body>
    <MaterialCode>20100001211100001</MaterialCode>
    <BOMRevision>201301.A</BOMRevision>
    <RevisionSequence>1</RevisionSequence>
    <EffectShift>1</EffectShift>
    <EffectTime>2013-07-01 00:00:00</EffectTime>
    <EffectRules>使用规则</EffectRules>
    <EffectRemark>测试使用</EffectRemark>
    <BOMItem>
        <MaterialCode>20111222221</MaterialCode>
        <Quantity>100.0</Quantity>
        <IsPercent>false</IsPercent>
        <WeightWithWater>10.0</WeightWithWater>
        <PercentQuantity>0.0</PercentQuantity>
        <WeightWithSugar>0.0</WeightWithSugar>
        <UOM>千克</UOM>
        <Sequence>1</Sequence>
        <Substitute>
            <MaterialCode>201112220001</MaterialCode>
            <Sequence>1</Sequence>
            <Quantity>100.0</Quantity>
            <IsPercent>false</IsPercent>
            <WeightWithWater>10.0</WeightWithWater>
            <PercentQuantity>0.0</PercentQuantity>
            <WeightWithSugar>0.0</WeightWithSugar>
            <UOM>千克</UOM>
        </Substitute>
    </BOMItem>
</Body>
</xml>
--------------------编程问答-------------------- 例子,http://www.marblelog.com/index.php/archives/390.html --------------------编程问答-------------------- 补充一下:在窗体上加入dataset控件,name修改为XmlDataSet,网上例子很多,你baidu一下, --------------------编程问答-------------------- 写一点自己的小总结吧
.net的XML基本操作是:
1.new一个 System.Xml.XmlDocument对象。
2.执行XmlDocument对象的Load方法加载XML文档。
3.XmlDocument对象的DocumentElement对象可操作文档的根,比如你这个文档的<xml/>。
4.可通过DocumentElement的ChildNodes属性获得根节点的所有子节点(XmlNode),子节点的ChildNodes属性可以获得该节点的所有子节点。
5.节点(XmlNode)有多种类型。常用的有:
  元素(Element),如<item/>
  文本(Text),如<item>text<item/>中的text,通过InnerText属性获取这个文本。
  通过节点的NodeType属性可以区分不同的节点。
6.节点(XmlNode)的Attributes属性可以访问节点的所有属性(XmlAttribute),例如<item a="5"/>的a,通过Value属性获取值。
7.通过XmlDocument对象的CreateElement方法去创建元素,通过节点(XmlNode)的AppendChild方法进行添加。
8.通过XmlDocument对象的save方法进行存储。 --------------------编程问答-------------------- 好人做到底!

        '在窗体上加入dataset控件,name修改为XmlDataSet
        Dim H_sender As String
        Dim H_receiver As String
        Dim H_name As String
        Dim H_time As String
        Dim H_event As String
        Dim B_MaterialCode As String
        Dim B_Quantity As String
        Dim s_MaterialCode As String
        Dim s_Quantity As String

        XmlDataSet.ReadXml("XMLFile1.xml")
        H_sender = XmlDataSet.Tables("Header").Rows(0)("Sender")
        H_receiver = XmlDataSet.Tables("Header").Rows(0)("Receiver")
        H_name = XmlDataSet.Tables("Header").Rows(0)("ServiceName")
        H_time = XmlDataSet.Tables("Header").Rows(0)("TimeStamp")
        H_event = XmlDataSet.Tables("Header").Rows(0)("EventId")

        B_MaterialCode = XmlDataSet.Tables("BOMItem").Rows(0).Item("MaterialCode")
        B_Quantity = XmlDataSet.Tables("BOMItem").Rows(0)("Quantity")
        ..........
        s_MaterialCode = XmlDataSet.Tables("Substitute").Rows(0).Item("MaterialCode")
        s_Quantity = XmlDataSet.Tables("Substitute").Rows(0)("Sequence")
        ........
--------------------编程问答-------------------- 非常感谢各位的帮助,我自己试试,有什么再请教各位!! --------------------编程问答-------------------- --------------------编程问答-------------------- 现在我取<body></body>之间的这一组数据是可以的,如何body之间是多组数据,我该如何界定当前数据是在第一组呢,还是第二组??我要把一组一组的数据提取出来插入数据库 --------------------编程问答--------------------
引用 7 楼 jsyzbyhuyong 的回复:
现在我取<body></body>之间的这一组数据是可以的,如何body之间是多组数据,我该如何界定当前数据是在第一组呢,还是第二组??我要把一组一组的数据提取出来插入数据库

XmlDocument对象的DocumentElement对象是根 <xml/>
<body/>是他的一个name=body,NodeType=Element的XmlNode。
DocumentElement.ChildNodes可以得到xml下的所有XmlNode。
那些个name=body,NodeType=Element的XmlNode,就是一个一个的<body/>
获取<body/>的子XmlNode,用其ChildNodes属性。
区分一组同级同名的XmlNode,就如同区分一个数组的各个元素。它们在父节点的ChildNodes属性中的索引序号不同。有没有数据区别你只能比较所有子节点和属性了。
单纯把所有东西读出来存储到数据库中,你只需要:
1.从DocumentElement遍历ChildNodes得到一个个的XmlNode
2.遍历XmlNode的属性
3.遍历XmlNode的ChildNodes --------------------编程问答-------------------- XmlSerializer, XMLDocument, 或者XDocument都可以。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,