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方法进行存储。 --------------------编程问答-------------------- 好人做到底!
--------------------编程问答-------------------- 非常感谢各位的帮助,我自己试试,有什么再请教各位!! --------------------编程问答-------------------- --------------------编程问答-------------------- 现在我取<body></body>之间的这一组数据是可以的,如何body之间是多组数据,我该如何界定当前数据是在第一组呢,还是第二组??我要把一组一组的数据提取出来插入数据库 --------------------编程问答--------------------
'在窗体上加入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")
........
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