使用LINQ to XML在VB.NET中更新XML元素

4

我正在尝试更新下面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

xdoc 是文档本身,只包含根元素。因此,xmldoc.Elements("LabService") 不会返回任何内容。

您需要写成 xmldoc.Root.Elements("LabService")

顺便提一下,编写 Where 子句的最佳方式是 Where ls.Element("ServiceType").Value = "Scan"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接