Каковы возможные специальные символы, которые должны быть обработаны при создании XML? - PullRequest
0 голосов
/ 23 марта 2011

Я пишу парсер XML; мое приложение создает файлы XML. Для этого мне нужно обработать специальные символы - например, я знаю, что < следует заменить на &lt;, аналогично > следует заменить на &gt; и так далее. Каковы все различные символы, которые должны быть обработаны таким образом?

Ответы [ 4 ]

1 голос
/ 23 марта 2011

Смотрите эту статью в Википедии: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

(если вы не делаете это для академических целей, я рекомендую вам использовать существующие библиотеки синтаксического анализа .Net Xml, например, в пространстве имен System.Xml или System.Xml.Linq. Если вы пытаетесь сериализовать / десериализовать объекты , используйте встроенную сериализацию Xml)

0 голосов
/ 23 марта 2011

Существует встроенный метод .NET SecurityElement.Escape для экранирования определенных (не всех) недопустимых символов XML. Проверьте эту ссылку:

http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape%28v=VS.80%29.aspx

0 голосов
/ 23 марта 2011

Здесь указан список кодов escape XML .

Используйте класс System.XML.XMLConvert для обработки специальных символов:

class Program
{
    static void Main(string[] args)
    {
        string s;
        s = System.Xml.XmlConvert.EncodeName("valid XML --> !@#$%^&*()");
        Console.WriteLine("Encoded: {0}", s);
        Console.WriteLine("Decoded: {0}",System.Xml.XmlConvert.DecodeName(s));
        Console.ReadLine();
    }
}

даст этот результат:

закодированные: valid_x0020_XML_x0020 _ - _ x003E__x0020__x0021__x0040__x0023__x0024__x002 5__x005E__x0026__x002A__x0028__x0029_

Расшифровано: действительный XML ->! @ # $% ^ & * ()

0 голосов
/ 23 марта 2011

Для XML синтаксический анализ вам не нужно выполнять эти замены - вам нужно будет выполнить их, когда создает XML. Вы также можете рассмотреть возможность замены & на &amp;, где это необходимо - подробности см. В спецификации XML.

Однако я бы настоятельно посоветовал вам не писать свой собственный XML API. .NET уже содержит несколько из них, в том числе отличный LINQ to XML. Используйте это вместо того, чтобы строить свой собственный. Вероятность того, что вы самостоятельно создадите свой собственный XML API такого же качества, очень мала, и вы начнете тратить на это немало времени.

Используя приличный XML API, вам не нужно беспокоиться о преобразовании символов и т. Д. - API справится с ними за вас.

...