簡體   English   中英

在vb.net中解析XML

[英]Parsing XML in 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)列表。

如果能為我指明正確的方向,我將不勝感激。 謝謝

我使用的方法是實現System.Xml功能http://msdn.microsoft.com/zh-cn/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()非常簡單。 希望這至少有助於您指出正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM