2016-07-13 8 views
0

次のコードは私に合っています。余分な手荷物を取り除き、関連する部品のみを掲示しています。フィールドvb.netに値のないxmlファイルを読み取る

sQuickPath = Server.MapPath("~/App_Data/BillCalculator.xml") 
Dim xrXMLReader As XmlReader = XmlReader.Create(sQuickPath) 
While xrXMLReader.Read() 
    If xrXMLReader.NodeType = XmlNodeType.Element And xrXMLReader.Name = "ServiceType" Then 
     Dim ql As XElement = CType(XNode.ReadFrom(xrXMLReader), XElement) 
     If IsDBNull(ql.Element("ProposedCustomerCharge").Value) Then 
      ProposedCustomerCharge = 0.0 
     ElseIf IsNothing(ql.Element("ProposedCustomerCharge").Value) Then 'Check doesn't find empty element 
      ProposedCustomerCharge = 0.0 
     ElseIf ql.Element("ProposedCustomerCharge").Value Is Nothing Then 
      ProposedCustomerCharge = 0.0 
     Else 
      ProposedCustomerCharge = CType(ql.Element("ProposedCustomerCharge").Value, Double) 'blows chunks 
     End If 
    End If 
End While 
xrXMLReader.Close() 
xrXMLReader = Nothing 

私はそのXMLフィールドに値がないが、IsNothingと空のフィールド値を見つけていない何もないときProposedCustomerChargeの値をゼロにするために私は考えることができるあらゆる方法を試してみました。 xmlファイルで

フィールドには、次のようになります。

<ProposedCustomerCharge></ProposedCustomerCharge> 

私は空のフィールドを見つけるにはどうすればよいですか?

答えて

0

ここでいくつかの問題がありました。最初;私は十分なコードを含んでいませんでした。行
Dim ql As XElement = CType(XNode.ReadFrom(xrXMLReader), XElement)
は間違った場所にありましたが、私が投稿したものからは分かりませんでした。私は、Subの始めにqlのDimを置いてループの中に値を与えた。私はループの外でそれを使用しようとしたことはありませんでしたが、何らかの理由で通常何も設定されませんでした。

私はIfの中に入ってきましたが、まだマッチしませんでした。私は追加しました
ElseIf ql.Element("ProposedCustomerCharge").IsEmpty Then ProposedCustomerCharge = 0.0
私がそれから学んだことは、IsEmptyが空の文字列を探していないことです。要素が存在する場合は空であり、そうでない場合はfalseを返します。私は最終的に私が必要としていたことを理解しました:
ElseIf ql.Element("ProposedCustomerCharge").Value = "" Then ProposedCustomerCharge = 0.0
これは、実際に一致し、ProposedCustomerChargeの値を0.0のdouble値に設定しました。

また、私が得ているxmlが最高の構文を使用していないことも知っています。
<ProposedCustomerCharge></ProposedCustomerCharge> は、 <ProposedCustomerCharge />

関連する問題