Как получить тег xml, который находится в теге DataSet1 (C #)? [Дубликат]

Ну, простыми словами:

Вы пытаетесь получить доступ к объекту, который не создан или в настоящее время не находится в памяти.

Итак, как это решить:

  1. Отладить и отпустить отладчик ... Он сразу приведет вас к переменной, которая сломана ... Теперь ваша задача - просто исправить это. Используя новое ключевое слово в соответствующем месте.
  2. Если это вызвано некоторыми командами базы данных, потому что объект отсутствует, все, что вам нужно сделать, это выполнить нулевую проверку и обработать его:
    if (i == null) {
        // Handle this
    }
    
  3. Самый сложный. если GC уже собрал объект ... Это обычно происходит, если вы пытаетесь найти объект, используя строки ... То есть, найдя его по имени объекта, может случиться, что GC, возможно, уже очистил его ... Это трудно найти и станет проблемой. Лучшим способом решения этой проблемы является выполнение нулевых проверок везде, где это необходимо в процессе разработки. Это сэкономит вам много времени.

Поиск по имени означает, что некоторые фреймворки позволяют использовать FIndObjects с помощью строк, а код может выглядеть так: FindObject («ObjectName»);

34
задан Shlomi Komemi 13 November 2010 в 08:26
поделиться

4 ответа

Вы должны использовать XmlNamespaceManager в своем вызове SelectSingleNode () :

XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode node = xmldoc.SelectSingleNode("//msbld:Compile", ns);
71
ответ дан Frédéric Hamidi 25 August 2018 в 02:33
поделиться

Таким образом, вам не нужно указывать пространство имен:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("your xml");
XmlNode node = xmlDoc.SelectSingleNode("/*[local-name() = 'Compile']");
XmlNode nodeToImport = xmlDoc2.ImportNode(node, true);
xmlDoc2.AppendChild(nodeToImport);
0
ответ дан Bruno B 25 August 2018 в 02:33
поделиться

Взято справа от документации SelectSingleNode() на MSDN :

Примечание. Если выражение XPath не содержит префикс, предполагается, что пространство имен URI - пустое пространство имен. Если ваш XML содержит пространство имен по умолчанию, вы все равно должны добавить URI префикса и пространства имен в XmlNamespaceManager; в противном случае вы не получите выбранный узел. Для получения дополнительной информации см. Выбор узлов с помощью XPath Navigation .

И сразу следующий примерный код:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr);

not as , если этот будет be " hidden знаний ". ; -)

17
ответ дан Community 25 August 2018 в 02:33
поделиться
2
ответ дан user3902302 25 August 2018 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: