GetElementById () не нахождение тега?

У меня есть допустимый XML-файл, считанный следующим сервисом окон C#.NET. Рассматриваемый тег (u1_000) находится абсолютно в элементе:

<book id="u1_000" category="xyz"> 

Действительно ли там некоторой причиной является GetElementById (), не находит Книжный элемент с тегом? - спасибо

XmlDocument doc = new XmlDocument();
doc.Load("C:\\j.xml");
XmlElement ee = doc.GetElementById("U1_000");

<book id="U1_000" category="web"> 
7
задан bobince 5 January 2010 в 00:32
поделиться

3 ответа

Если больше ничего, возможно, используйте xpath в качестве резервной копии:

string id = "u1_000";
string query = string.Format("//*[@id='{0}']", id); // or "//book[@id='{0}']"
XmlElement el = (XmlElement)doc.SelectSingleNode(query);
4
ответ дан 7 December 2019 в 01:22
поделиться

Проверьте документацию MSDN для данного метода. В примере ниже видно, как они устанавливают идентификатор с помощью DOCTYPE. Это может устранить проблему.

.
3
ответ дан 7 December 2019 в 01:22
поделиться

Вам нужен DTD, чтобы установить, какой атрибут на элементах будет согласовывать уникальный идентификатор. В XML не предполагается автоматически, что атрибут id должен рассматриваться как уникальный идентификатор элемента.

В общем "unDTDed" XML getElementById не очень полезен. В большинстве случаев понятна структура обрабатываемого XML файла (например, корневой элемент называется книги, который содержит серию элементов книги), поэтому типичный доступ будет выглядеть примерно так:-

 XmlElement book = (XmlElement)doc.DocumentElement.SelectSingleNode("book[@ID='U1_000']");

Если вы действительно не знаете структуру XML и/или имя тэга элемента, то сработает поиск методом перебора, описанный в ответе Marcs

.
3
ответ дан 7 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

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