VB.NET使用LINQ to XML向XML文档添加元素

时间:2010-03-15 13:31:04

标签: vb.net linq-to-xml

我正在使用以下代码向现有XML文档添加元素:

        Dim theXMLSource As String = Server.MapPath("~/Demo/") & "LabDemo.xml"
    Dim nodeElement As XElement

    Dim attrAndValue As XElement = _
        <LabService>
            <ServiceType>
                <%= txtServiceType.Text.Trim %>
            </ServiceType>
            <Level>
                <%= txtLevel.Text.Trim %>
            </Level>
        </LabService>

    nodeElement.Add(New XElement(attrAndValue))
    nodeElement.Save(theXMLSource)

它出现如下错误:

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

Object reference not set to an instance of an object.

Error line: nodeElement.Add(New XElement(attrAndValue))

我调试了它,但我还没有得到错误。你能说明问题是什么吗?谢谢

4 个答案:

答案 0 :(得分:4)

您需要加载现有文件,如下所示:

Dim theXMLSource As String = Server.MapPath("~/Demo/LabDemo.xml")
Dim document As XDocument = XDocument.Load(theXMLSource)

...

document.Root.Add(attrAndValue)
document.Save(theXMLSource)

答案 1 :(得分:0)

您定义nodeElement但在调用其方法之前不要实例化它。

答案 2 :(得分:0)

您需要先实例化:

Dim nodeElement As New XElement 

答案 3 :(得分:0)

“Dim nodeElement As New XElement”

实际上,New不是XElements的有效方法。即使它通过了调试(我怀疑它),它也会导致未处理的重载

像SLaks说的那样,你可以打开现有文件 - (我认为文件可能就像你在帖子中说的那样存在)。

您可以使用

document.Root.Add(attrAndValue)

Dim nodeElement As XElement = document.<theXMLroot>(0)

nodeElement.Add(attrAndValue)

接着是

document.Save(theXMLSource)

两者的工作方式相同。因为你正在使用文字,我想你可能想知道“第二种方式”它有用主要是因为你可以改变你想要插入元素的位置。

例如

Dim nodeElement As XElement = document.<theXMLroot>.<parent>(0)

Dim nodeElement As XElement = document...<parent>(0)

希望有所帮助