У меня есть функция, которая получает строку, переданную ему. При тестировании функции я получаю исключение нулевой ссылки в строковом параметре, который передается ему, хотя строка не является нулевой, я не понимаю, почему я получаю эту ошибку. У меня есть снимок экрана нижеNullReference для значения, которое не является нулевым
Я использовал фиктивное значение, чтобы проверить как строковый параметр в функции SelectSingleNode и строковый параметр NEWVALUE передается в мою функцию, и они оба содержат значения, так что я не» t понять, почему он выбрасывает исключение с нулевой ссылкой. Для ясности цель этой функции - записать значения обратно в узлы XML-файла.
UPDATE
Извините за не размещение кода
Private Sub setValue(ByVal nodeToMod As String, ByVal newValue As String)
''Test writing to xml config file
Dim dummy As String = "Config/" & nodeToMod
Dim xmlDoc As New XmlDocument
Using fs As FileStream = New FileStream(HttpContext.Current.Server.MapPath("~/XML_Config/Config.xml"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
xmlDoc.Load(fs)
Dim foo As XmlNode = xmlDoc.SelectSingleNode(dummy)
Console.WriteLine(foo.InnerXml)
fs.Seek(0, SeekOrigin.Begin)
fs.SetLength(0)
xmlDoc.Save(fs)
End Using
End Sub
А вот XML файл я работаю с
<?xml version="1.0" encoding="utf-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Username>[email protected]</Username>
<Password>Password1</Password>
<ProductType>MyProduct</ProductType>
<DirectoryEntryPath>LDAP://myDomain</DirectoryEntryPath>
<SMTPDefaultOnly>True</SMTPDefaultOnly>
<Logo>myLogo.gif</Logo>
</Config>
Да, функция SlectSingleNode не возвращает значение. Я только начал работать с XPath, это, похоже, сработало, когда я использовал на прошлой неделе. Я не уверен, почему она перестала работать сейчас.
UPDATE2:
Понял, глупую ошибку. У меня был nodeToMod передаются как «UserName» вместо «Username» в методе Set
Set(ByVal value As String)
setValue("UserName", value.ToString)
_userName = value
End Set
Вы могли бы хотеть, чтобы показать нам больше кода. Если он дает пустое исключение, то «newValue» определенно является нулевым во время его присвоения внутреннему тексту. – loxxy
@loxxy, 'newValue' не разыгрывается на этой строке. Это не может быть причиной NRE. –
@kirk, вопрос был отредактирован с дополнительной информацией. Разновидность не была очевидна раньше. – loxxy