У меня есть допустимый 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">
Если больше ничего, возможно, используйте xpath в качестве резервной копии:
string id = "u1_000";
string query = string.Format("//*[@id='{0}']", id); // or "//book[@id='{0}']"
XmlElement el = (XmlElement)doc.SelectSingleNode(query);
Проверьте документацию MSDN для данного метода. В примере ниже видно, как они устанавливают идентификатор с помощью DOCTYPE. Это может устранить проблему.
. Вам нужен DTD, чтобы установить, какой атрибут на элементах будет согласовывать уникальный идентификатор. В XML не предполагается автоматически, что атрибут id
должен рассматриваться как уникальный идентификатор элемента.
В общем "unDTDed" XML getElementById не очень полезен. В большинстве случаев понятна структура обрабатываемого XML файла (например, корневой элемент называется книги
, который содержит серию элементов книги
), поэтому типичный доступ будет выглядеть примерно так:-
XmlElement book = (XmlElement)doc.DocumentElement.SelectSingleNode("book[@ID='U1_000']");
Если вы действительно не знаете структуру XML и/или имя тэга элемента, то сработает поиск методом перебора, описанный в ответе Marcs
.