Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
все что дает компания Microsoft в .Net для XSLT – настоящее убожествоМожно поподробнее, в чём убогость? Недавно кидал распарсенные данные в SQL-дамп через XSLT — всё было в порядке.
мне нужно более организованно управлять мэппингами, быстро реагировать на измененияОпять не понял. Много красивых слов вижу, сути не вижу. Вы вообще LINQ пользовались? Вместо того, чтобы написать элементарный код, чрезвычайно похожий (внимание!) на XQuery, вы городите преобразование CLR в XSD, потом прогоняете это через сторонний XSLT-парсер при этом пишете в статье в каждом абзаце какой это геморрой. А всего-то и надо, что заполнить данными экземпляр класса. Может быть я всё-таки немного не понимаю, чего вы хотите добиться, но навскидку — LINQ тут был бы идеальным и бескровным решением.
public static XmlDocument LoadFromUrlAsXML(string url, CookieContainer contayner)
{
using (SgmlReader reader = new SgmlReader { InputStream = new StringReader(CleanString(WebDownloader.GetString(EncodeCyrUrl(url), null, (byte[])null, contayner))) })
{
if (!url.Contains("://")) url = String.Format("http://{0}", url);
XmlDocument doc = new XhtmlDocument(reader.NameTable);
doc.Load(reader);
reader.Close();
return doc;
}
}
* This source code was highlighted with Source Code Highlighter./// <summary>
/// Используется чтобы оставить только содержимое HTML части, для более удобного приведения к XML виду
/// </summary>
private static string CleanString(string str)
{
return str.Substring(str.IndexOf("<html", StringComparison.OrdinalIgnoreCase), str.IndexOf("</html>", StringComparison.OrdinalIgnoreCase) - str.IndexOf("<html", StringComparison.OrdinalIgnoreCase) + 6);
}
* This source code was highlighted with Source Code Highlighter.
Data acquisition, часть 2