Контакт с запрещенными символами в XML, использующем C#.NET

Если Вы находитесь на OSX, то это ~/.profile

6
задан Dominic Zukiewicz 8 December 2011 в 11:02
поделиться

4 ответа

Вы можете убежать, как и в случае с HTML. 0x1E совпадает с десятичным числом 30, поэтому просто замените символ разделителя записей строкой "& 30;" и все должно быть в порядке.

2
ответ дан 8 December 2019 в 17:23
поделиться

XML - это удобочитаемый формат, поэтому непечатаемые управляющие символы запрещены. Вы можете использовать десятичные коды сущностей, например & # 30; для их представления или кодирование содержимого по системе base-64.

1
ответ дан 8 December 2019 в 17:23
поделиться

Поскольку вы не предоставили никаких подробностей, я Я собираюсь предположить, что ваше свойство имеет тип System.String . Если это так, то вы не можете сериализовать его как есть. Вместо этого вы должны сериализовать его как байт []:

[XmlRoot("root")]
public class HasBase64Content
{
    [XmlIgnore]
    public string Content { get; set; }

    [XmlElement("Content")]
    public byte[] Base64Content
    {
        get
        {
            return System.Text.Encoding.UTF8.GetBytes(Content);
        }
        set
        {
            if (value == null)
            {
                Content = null;
                return;
            }

            Content = System.Text.Encoding.UTF8.GetString(value);
        }
    }
}
1
ответ дан 8 December 2019 в 17:23
поделиться

Если ваша база данных не очень проста - или очень хорошо спроектирована - вы обнаружите, что она плохо подходит для Django.

Хотя реверс-инжиниринг работает хорошо, вы можете обнаружить, что исходный дизайн базы данных был ошибочным, и у вас есть много неуклюжих обходных путей.

Вопрос касается «устаревшего программного обеспечения», которое работает со старой моделью данных.

Я бы посоветовал вам сделать следующее.

  1. Разработайте правильную модель данных с помощью Django.

  2. Сопоставьте правильную модель с тем, что у вас есть.

  3. Напишите сценарий преобразования, который использует простой, прямой SQL и Django ORM для переноса данных из модели, не поддерживающей Django, в лучшую модель.

    • Если у вас есть устаревшее программное обеспечение, вам придется разработать соответствующий график перемещения данных.

    • Если у вас его нет. любое устаревшее программное обеспечение, вы

      [Определение: проанализированный объект содержит текст, последовательность символов, которая может представлять разметку или символьные данные.] [Определение: символ - это элементарная единица текста, как указано в ISO / IEC 10646 [ISO / IEC 10646] (см. также [ISO / IEC 10646-2000]). Допустимые символы - табуляция, возврат каретки, перевод строки и допустимые символы Unicode и ISO / IEC 10646. Версии этих стандартов, процитированные в A.1 Нормативные ссылки, действовали на момент подготовки этого документа. Новые символы могут быть добавлены к этим стандартам посредством поправок или новых редакций. Следовательно, процессоры XML должны принимать любой символ в диапазоне, указанном для Char. Использование «символов совместимости», как определено в разделе 6.8 [Unicode] (см. Также D21 в разделе 3.6 [Unicode3]), не рекомендуется. ]

      Диапазон символов

      [2]     Char       ::=      #x9 | #xA | #xD | [#x20-#xD7FF] |
                  [#xE000-#xFFFD] | [#x10000-#x10FFFF]    
           /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
      

      Механизм кодирования кодовых точек символов в битовые шаблоны может варьироваться от объекта к объекту. Все процессоры XML должны принимать кодировки UTF-8 и UTF-16 10646; механизмы для сигнализации, какая из двух используется, или для включения других кодировок, обсуждаются позже, в разделе 4.3.3 Кодирование символов в объектах.


7
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: