2011-09-29 74 views
0

我有一个供应商提供给我的XML,无论我尝试什么,我都无法在VB.net中解析它。我是XML的新手,请理解这一点。在vb.net中解析XML

这是供应商发过来的XML:

<?xml version='1.0'?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 

<xsd:element name="event"> 
<xsd:complexType> 
    <xsd:sequence> 
    <xsd:element name="id" type="xsd:integer"></xsd:element> 
    <xsd:element name="old_id" type="xsd:integer"></xsd:element> 
    <xsd:element name="opponent" type="xsd:string">Austin MS</xsd:element> 
    <xsd:element name="game_date" type="xsd:string">2011-08-31</xsd:element> 
    <xsd:element name="start_time" type="xsd:string">5:00PM</xsd:element> 
    <xsd:element name="end_time" type="xsd:string">8:00PM</xsd:element> 
    <xsd:element name="sport" type="xsd:string">Baseball</xsd:element> 
    <xsd:element name="level" type="xsd:string">7th</xsd:element> 
    <xsd:element name="gender" type="xsd:string">Boys</xsd:element> 
    <xsd:element name="year" type="xsd:string">2011</xsd:element> 
    <xsd:element name="season" type="xsd:string">Fall</xsd:element> 
    <xsd:element name="status" type="xsd:string">Deleted</xsd:element> 
    <xsd:element name="homeaway" type="xsd:string">Home</xsd:element> 
    <xsd:element name="facility">France</xsd:element> 
    <xsd:element name="facility_id" type="xsd:integer"></xsd:element> 
    <xsd:element name="opponent"> 
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="ss_id" type="xsd:integer">19505</xsd:element> 
     <xsd:element name="name" type="xsd:string">Austin MS</xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="location"> 
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="ss_id" type="xsd:integer">108</xsd:element> 
     <xsd:element name="name" type="xsd:string">Breck School</xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="score"> 
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="result" type="xsd:string"></xsd:element> 
     <xsd:element name="ours" type="xsd:string"></xsd:element> 
     <xsd:element name="theirs" type="xsd:string"></xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="league" type="xsd:string"></xsd:element> 
    <xsd:element name="type" type="xsd:string">Championship</xsd:element> 
    <xsd:element name="ss_id" type="xsd:string">305</xsd:element> 
    <xsd:element name="transportation" type="xsd:string"></xsd:element> 
    <xsd:element name="dismissal" type="xsd:string"></xsd:element> 
    <xsd:element name="return" type="xsd:string"></xsd:element> 
    <xsd:element name="comment"> 
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="school" type="xsd:string"></xsd:element> 
     <xsd:element name="conference" type="xsd:string"></xsd:element> 
    </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
    <xsd:element name="home_team" type="xsd:string">Breck - St Paul - Apple Valley</xsd:element> 
    <xsd:element name="activity_type" type="xsd:string">conference</xsd:element> 
    <xsd:element name="category" type="xsd:string"></xsd:element> 
    <xsd:element name="sub_category" type="xsd:string"></xsd:element> 
    <xsd:element name="state" type="xsd:string">MN</xsd:element> 
    </xsd:sequence> 
</xsd:complexType> 
</xsd:element> 

</xsd:schema> 

我曾尝试使用XSD.EXE创建一个vb.net类,它的错误。我已经联系了提供XML的供应商,但他们没有太多帮助。我希望能够将这个XML抽取到一个函数中,并使用XML中的属性和列表弹出一个(SportEvents)列表。

我会很乐意为我指出正确的方向。 由于

+0

您发布的XML是一个模式文件 - 它描述了一种XML格式。你使用XSD.exe得到了什么错误? – Oded

回答

0

,我已经采用的方法是实现功能的System.Xml http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx

Dim configDoc As XmlDocument = New XmlDocument() 
Dim nodes As XmlNodeList = Nothing 
Dim stringHolder as String = "" 

装入原稿像这样

configDoc.Load("filepath") 'load the file 

然后拉中的值无论是单个节点或节点列表

stringHolder = configDoc.SelectSingleNode("/xpath").attributes.getNamedItem("attributeName").Value.toString() 

或内部节点的列表。

nodes = configDoc.SelectNodes("/xpath") 
for each n as XmlNode in nodes 
    stringHolder = n.attributes.getNamedItem("attributeName").Value.toString() 
'do stuff with string 
next 

现在这些方法只处理xml节点的属性。如果你需要内部文本,那么你可以研究.innertext()它的非常简单。希望这有助于你至少指出正确的方向。

+0

你必须导入system.xml –