我正在使用以下代码向现有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))
我调试了它,但我还没有得到错误。你能说明问题是什么吗?谢谢
答案 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)
希望有所帮助