2010-03-15 2 views
4

Je suis en train de mettre à jour un élément dans le document XML ci-dessous:élément XML de mise à jour avec LINQ to XML en VB.NET

Voici le code:

Dim xmldoc As XDocument = XDocument.Load(theXMLSource1) 
     Dim ql As XElement = (From ls In xmldoc.Elements("LabService") _ 
       Where CType(ls.Element("ServiceType"), String).Equals("Scan") _ 
       Select ls.Element("Price")).FirstOrDefault 


     ql.SetValue("23") 
     xmldoc.Save(theXMLSource1) 

Voici le fichier XML:

<?xml version="1.0" encoding="utf-8"?> 
<!--Test XML with LINQ to XML--> 

<LabSerivceInfo> 

    <LabService> 
    <ServiceType>Copy</ServiceType> 
    <Price>1</Price> 
    </LabService> 

    <LabService> 
    <ServiceType>PrintBlackAndWhite</ServiceType> 
    <Price>2</Price> 
    </LabService> 

</LabSerivceInfo> 

Mais, je reçu ce message d'erreur:

Object reference not set to an instance of an object. 
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 

Error line:ql.SetValue("23") 

Pouvez-vous me montrer quel est le problème? Je vous remercie.

Répondre

4

xdoc est le document lui-même et contient uniquement l'élément racine. Par conséquent, xmldoc.Elements("LabService") ne renvoie rien.

Vous devez écrire xmldoc.Root.Elements("LabService").

Par ailleurs, la meilleure façon d'écrire la clause Where est Where ls.Element("ServiceType").Value = "Scan"