2012-07-23 52 views
1

我有一個XML螞蟻我想如果一個元素存在chcke,如果是,那麼如果它有一個價值
XML例子:VB.net XML檢查元素存在,如果它有一個值

<Attributes Version="1.0.2012"> 
    <OpenAtStart>True</OpenAtStart> 
    <RefreshTime>60</RefreshTime> 
</Attributes> 

所以我想,以檢查是否存在OpenAtStart,然後我要檢查它是否有一個值: 所以我建立了功能,下面

Private Function existsOrEmpty(ByVal type As Type, ByVal node As XmlNode, ByVal defaultValue As Object) As Object 
    Dim myObj As Object = Nothing 
    Try 
     Cursor.Current = Cursors.WaitCursor 
     If node IsNot Nothing Then 
      Select Case type 
       Case GetType(Integer) 
        If Integer.TryParse(node.InnerText, myObj) = False Then 
         myObj = defaultValue 
        End If 
       Case GetType(Double) 
        If Double.TryParse(node.InnerText, myObj) = False Then 
         myObj = defaultValue 
        End If 
       Case GetType(Boolean) 
        If Boolean.TryParse(node.InnerText, myObj) = False Then 
         myObj = defaultValue 
        End If 
       Case Else 
        myObj = node.InnerText 
      End Select 
     Else 
      myObj = defaultValue 
     End If 

    Catch ex As Exception 
     gError.GetAppEx(ex, CLASS_NAME & ".existsOrEmpty") 
    Finally 
     Cursor.Current = Cursors.Default 
    End Try 
    Return myObj 
End Function 

這是一個好辦法或者有更好的/快?

感謝

回答

5

嘗試LINQ-XML有效地解析XML文檔/串。

Dim str = "<Attributes Version=""1.0.2012"">" _ 
        & "<OpenAtStart>True</OpenAtStart>" _ 
        & "<RefreshTime>60</RefreshTime></Attributes>" 

Dim doc As XDocument = XDocument.Parse(str) 
Dim element = doc.Root.Element("OpenAtStart") 

If IsNothing(element) Then 
     Console.WriteLine("Not Found") 
Else 
     Console.WriteLine(element.Value) 
     Console.WriteLine(element.Parent.Element("RefreshTime").Value) 
End If 
+0

對不起,如果我遺漏了一些東西,但是您提供的代碼沒有設置默認值,以防存在但爲空。 所以我必須做另一個檢查,如果該值爲null或類似的東西? – Nianios 2012-07-23 11:11:31

+0

於是我想出了這一點: 如果IsNothing(元素),然後 Label1.Text = 「好好嘗試一下存在」 否則 如果String.IsNullOrEmpty(element.Value)然後 Label1.Text =默認值 否則 Label1.Text = element.Value End If End If – Nianios 2012-07-23 11:31:13

相關問題