excel xml не селектит...?
От: ralnikov  
Дата: 28.02.05 08:56
Оценка:
Уважаемые!

Экспортировал эксельный файл в xml, чтобы форматнуть его xslt. То, что xslt не работает я ещё себе простил, почти не работал с этой технологией. Но! Даже простые запросы в c# отказываются работать.

Например, грузим файл в xmldocument, следующий код:

foreach (XmlNode node in root.ChildNodes)
Console.WriteLine(node.Name);

выдаёт:

DocumentProperties
ExcelWorkbook
Styles
Worksheet

Отлично! Пишем:

XmlNode nodeWB = root.SelectSingleNode("Worksheet");

Не находит. null.

"XmlNodeList list = doc.SelectNodes("Workbook/Worksheet/Table/Row", nm);" также не работает, хотя пробовал все варианты.

Что за бред? Где я туплю?
Re: excel xml не селектит...?
От: Melo  
Дата: 28.02.05 10:25
Оценка:

R>Отлично! Пишем:

R>XmlNode nodeWB = root.SelectSingleNode("Worksheet");

R>Не находит. null.


И правильно не находит. Вот так, например, найдет:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("excel", "urn:schemas-microsoft-com:office:spreadsheet");
XmlNode snode = root.SelectSingleNode("excel:Worksheet", nsmgr);


где doc — это обьект XmlDocument который парсите.

Подсказка: Обратите внимание на документацию MSDN к методу "SelectSingleNode".
Re[2]: excel xml не селектит...?
От: ralnikov  
Дата: 28.02.05 10:32
Оценка:
Мдя, чуствую необходимость RTFM
Help я конечно читал, даже написал

NameTable nt = new NameTable();
XmlNamespaceManager nm = new XmlNamespaceManager(nt);
nm.AddNamespace("", "urn:schemas-microsoft-com:office:spreadsheet");
nm.AddNamespace("o", "urn:schemas-microsoft-com:office:office");
nm.AddNamespace("x", "urn:schemas-microsoft-com:office:excel");
nm.AddNamespace("ss", "urn:schemas-microsoft-com:office:spreadsheet");
nm.AddNamespace("html", "http://www.w3.org/TR/REC-html40");


Но вот написать ss:Worksheet вместо Worksheet не допёр

XmlNode nodeWB = root.SelectSingleNode("ss:Worksheet", nm);

Спасибо за помощь, благородный сэр.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.