В этом случае простым решением было бы закодировать его вручную следующим образом:
<svg height="220" width="400" viewBox="0 0 400 220">
<path d="M10,10 L210,10 L210,210 L110,210 L110,110 L10,110 L10,10" stroke="green" fill="none" />
</svg>
Однако для более сложных фигур это не буду делать Решением будет удаление обводки из ваших фигур, заполнение их белым или любым другим цветом и применение фильтра для выделения группы фигур:
<svg height="220" width="400" viewBox="0 0 400 220">
<filter id="outline">
<feMorphology in="SourceAlpha" result="expanded"
operator="dilate" radius="3"/>
<feFlood flood-color="red" result="indi" />
<feComposite in ="indi" in2="expanded" operator="in" />
<feComposite in="SourceGraphic"/>
</filter>
<g fill="white" filter="url(#outline)">
<path d="M10 10 L110 10 L110 110 L10 110 Z" />
<path d="M110 10 L210 10 L210 110 L110 110 Z" />
<path d="M110 110 L210 110 L210 210 L110 210 Z" />
</g>
</svg>
Надеюсь, это поможет.
Необходимо преобразовать в utf-16
Я не эксперт по XML в SQL Server даже при том, что я использую его, но у нас была та же проблема в прошлом году, и это было несоответствие типа данных String, объявленного в SQL по сравнению с xml тем, чтобы быть отправленным.
Я нашел это на Google. http://social.msdn.microsoft.com/forums/en-US/sqlxml/thread/d40ef582-4ffe-4f4b-b6b8-03c6c0ba1a32/
Я думаю, что можно заменить строку
_cmd.Parameters.Add("@XmlContents", SqlDbType.Xml);
с
_cmd.Parameters.Add("@XmlContents", System.Data.SqlTypes.SqlXml);
Вы могли возможно переписать xml как unicode (возможно, к a MemoryStream
) и отправьте это?Примечание: если Вы просто храните данные, можно использовать varbinary(max)
(и это на самом деле будет более быстро). Это не испытывает затруднений с кодированием и также позволит Вам контролировать любое повреждение xml, что Вы получаете.
Если Вы запрашиваете данные как xml в сервере базы данных затем xml
очевидно, способ пойти.
Я отправил некоторую информацию:
http://mrboratech.blogspot.com/2009/02/how-to-store-xmldocument-mssql-2005-as.html
Редактировать
Я пропустил часть вопроса, касающуюся ISO-8859-1 - решение ниже подходит для UTF8, но, очевидно, не решает проблему Марка, поскольку он не может изменить кодирование.
Вот решение, которое я использую:
И немного измененная версия кода, приведенного выше (я тестировал ее с файлом UTF8, используя SQL 2005):
using System.IO;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
...
using (SqlConnection connection = new SqlConnection("conn string"))
{
connection.Open();
string sql = "INSERT INTO mytable (xmlColumn) VALUES (@xmlData)";
using (SqlCommand command = new SqlCommand(sql, connection))
{
// Swap round if the source file is unicode
string xml = File.ReadAllText(@"C:\myxml.xml");
//string xml = File.ReadAllText(@"C:\myxml.xml", Encoding.Unicode);
using (MemoryStream stream = new MemoryStream())
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.Unicode))
{
writer.Write(xml);
writer.Flush();
stream.Position = 0;
SqlParameter parameter = new SqlParameter("@xmlData", SqlDbType.Text);
parameter.Value = new SqlXml(stream);
command.Parameters.Add(parameter);
command.ExecuteNonQuery();
}
}
}
}