Обновить элемент XML с помощью LINQ to XML в VB.NET - PullRequest
4 голосов
/ 15 марта 2010

Я пытаюсь обновить элемент в XML-документе ниже:

Вот код:

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)

Вот файл 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>

Но я получил это сообщение об ошибке:

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

Можете ли вы показать мне, в чем проблема? Спасибо.

1 Ответ

4 голосов
/ 15 марта 2010

xdoc сам документ и содержит только корневой элемент. Следовательно, xmldoc.Elements("LabService") ничего не возвращает.

Вам нужно написать xmldoc.Root.Elements("LabService").

Кстати, лучший способ написать предложение Where - Where ls.Element("ServiceType").Value = "Scan"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...