4 Stimmen

Aktualisieren eines XML-Elements mit LINQ to XML in VB.NET

Ich versuche, ein Element in dem unten stehenden XML-Dokument zu aktualisieren:

Hier ist der 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)

Hier ist die XML-Datei:

<?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>

Aber ich habe diese Fehlermeldung erhalten:

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")

Können Sie mir zeigen, was das Problem ist? Ich danke Ihnen.

4voto

SLaks Punkte 832502

xdoc ist das Dokument selbst und enthält nur das Root-Element. Deshalb, xmldoc.Elements("LabService") gibt nichts zurück.

Sie müssen Folgendes schreiben xmldoc.Root.Elements("LabService") .

Übrigens, die beste Art, die Where Klausel ist Where ls.Element("ServiceType").Value = "Scan"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X