Это очень неправильно. Используйте один из .NET API, которые понимают XML для написания XML.
Использование System.Xml.XmlWriter
не вызовет проблем с производительностью при загрузке «лишних библиотек».
Причиной использования API-интерфейсов XML является то, что они понимают правила XML. Например, они будут знать набор символов, которые необходимо заключить в кавычки внутри элемента, и другой набор, который необходимо заключить в кавычки внутри атрибута.
В вашем случае это может не быть проблемой: возможно, вы уверены, что в domain
не будет символов, которые нужно будет заключать в кавычки. В любой более широкой ситуации лучше всего позволить XML-API делать XML - что они умеют делать - так что вам не придется делать это самостоятельно.
Вот пример того, как легко создать действительный XML с использованием LINQ to XML:
public static string MakeXml()
{
XNamespace xmlns = "http://a9.com/-/spec/opensearch/1.1/";
XNamespace moz = "http://www.mozilla.org/2006/browser/search/";
string domain = "http://localhost";
string searchTerms = "abc";
var doc = new XDocument(
new XDeclaration("1.0", "UTF-8", "yes"),
new XElement(
xmlns + "OpenSearchDescription",
new XElement(xmlns + "ShortName", "Search"),
new XElement(
xmlns + "Description",
String.Format("Use {0} to search.", domain)),
new XElement(xmlns + "Contact", "contact@sample.com"),
new XElement(
xmlns + "Url",
new XAttribute("type", "text/html"),
new XAttribute("method", "get"),
new XAttribute(
"template",
String.Format(
"http://{0}/Search.aspx?q={1}",
domain,
searchTerms))),
new XElement(
moz + "SearchForm",
String.Format("http://{0}/Search.aspx", domain)),
new XElement(
xmlns + "Image",
new XAttribute("height", 16),
new XAttribute("width", 16),
new XAttribute("type", "image/x-icon"),
String.Format("http://{0}/favicon.ico", domain))));
return doc.ToString(); // If you _must_ have a string
}