XmlDocument - ParentNode и DocumentType имеют значение null - PullRequest
0 голосов
/ 11 февраля 2009

В .NET, что это значит, если вы LoadXml () в объект XmlDocument, а затем ParentNode и DocumentType равны нулю?

Кроме того, я получаю это как ответ на xmldoc.FirstChild.Value:
version="1.0" encoding="utf-8"

Это правильно? Прошло какое-то время с тех пор, как я сделал какие-то вещи в XML DOM. Файл закодирован в формате UTF-8. Думаю, это не должно быть проблемой. Существует ли простой метод проверки истинности / ложности моего документа?

UPDATE:
Если NodeType - это Element, как вы возвращаете «имя тега»?

ТЕКУЩЕЕ МЫШЛЕНИЕ:
xmldoc.ChildNodes [1] .Name;

Я заметил, что свойство Name - это только Get. Какой инструмент лучше использовать, если вы хотите поменять корневой тег на что-то другое (например, «feed» на «container»), но хотите что-то более легкое, чем XSLT, а не просто text / replace. Все еще хотел бы видеть пример LINQ to XML. Спасибо всем за помощь. Полагаю, это было дольше, чем я думал, с тех пор как я посмотрел на XML в .NET.

Ответы [ 2 ]

1 голос
/ 11 февраля 2009

Корневой элемент всегда доступен через свойство XmlDocument.DocumentElement. Имя корневого элемента можно определить с помощью строкового свойства XmlDocument.DocumentElement.LocalName.

Если вы хотите переименовать корневой элемент, лучше использовать другой экземпляр XmlDocument, добавьте корневой элемент с помощью XmlDocument.CreateNode, назовите его как хотите, затем зацикливайте дочерние элементы корневого элемента исходного документа и используйте метод CloneNode (bool deep) в сочетании с методом XmlNode.ImportNode для копирования остальной части исходного документа в новый документ.

1 голос
/ 11 февраля 2009

Из документации MSDN, XmlDocument.ParentNode всегда возвращает ноль - сам документ является корневым, поэтому у него нет родителя. Свойство DocumentType возвращает тег DOCTYPE, которого нет в вашем примере.

...