2010-03-15 2 views
4

Я пытаюсь обновить элемент в документе XML ниже:Обновление XML элемент с LINQ к XML в VB.NET

Вот код:

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

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

ответ

4

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

Вам необходимо написать xmldoc.Root.Elements("LabService").

Кстати, лучший способ, чтобы написать статью Where является Where ls.Element("ServiceType").Value = "Scan"

Смежные вопросы