Он чувствует себя грязным. Но, возможно, это не так... нормально ли использовать StringBuilder для написания XML? Мой интуитивный инстинкт говорит: "Хотя это кажется неправильным, это, вероятно, довольно чертовски показательно, потому что он не загружает лишние библиотеки и накладные расходы, что он не выполняет никаких дополнительных вызовов, вызываемых XmlWriter". Похоже, что это всего лишь меньше кода в целом. Какая польза в XmlWriter?
Вот как это выглядит. Я создаю документ OpenSearch XML на основе домена, из которого вы входите.
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
string domain = WebUtils.ReturnParsedSourceUrl(null); //returns something like www.sample.com
string cachedChan = context.Cache[domain + "_opensearchdescription"] as String;
if (cachedChan == null)
{
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.Append("<OpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:moz=\"http://www.mozilla.org/2006/browser/search/\">");
sb.Append(" <ShortName>Search</ShortName>");
sb.Append(" <Description>Use " + domain + " to search.</Description>");
sb.Append(" <Contact>[email protected]</Contact>");
sb.Append(" <Url type=\"text/html\" method=\"get\" template=\"http://" + domain + "/Search.aspx?q={searchTerms}\" />");
sb.Append(" <moz:SearchForm>http://" + domain + "/Search.aspx</moz:SearchForm>");
sb.Append(" <Image height=\"16\" width=\"16\" type=\"image/x-icon\">http://" + domain + "/favicon.ico</Image>");
sb.Append("</OpenSearchDescription>");
cachedChan = sb.ToString();
context.Cache.Insert(domain + "_opensearchdescription", cachedChan, null, DateTime.Now.AddDays(14), TimeSpan.Zero);
}
context.Response.Write(cachedChan);
}
Последовательность, ~ 2 года спустя Я понял, что я хотел сказать, и полностью не смог сказать, что это: какова польза от gobs кода с использованием классов XML для создания этого файла, а просто с использованием строк? Есть ли это? Это хуже, чем (например) пример Джона Саундера?
Я использовал метод Джима Шуберта, выбрав "Я могу это прочитать, и это имеет смысл" вместо того, чтобы бороться за "правильность". Я рад, что сделал. Нет ничего плохого в том, что касается примера Джона Саундера, но я чувствовал, что это было способно овладеть тем, что я пытался достичь. Прагматизм? Может быть.