Как сохранить пробелы в значениях атрибутов при использовании XDocument? - PullRequest
3 голосов
/ 15 октября 2010

Я обрабатываю xml, который содержит вкладки ("\ t") и разрывы строк ("\ n") в значениях своих атрибутов. Когда я анализирую его с помощью XDocument.Parse (), вкладки и разрывы строк преобразуются в пробелы, даже с параметром LoadOptions.PreserveWhitespace.

Как я могу получить XDocument с исходными значениями атрибутов?

Ответы [ 2 ]

2 голосов
/ 14 июня 2012

Вы можете использовать простой XmlTextReader для разбора xml-строки. Это сохранит все пробелы в значениях атрибута:

string textToParse = "<e a=\"x\ty\rz\n\" />" ;
using (var sr = new StringReader(textToParse)) {
    using (var xr = new XmlTextReader(sr)) {
        var xd = XDocument.Load(xr);
        System.Console.WriteLine(xd.ToString());
    }
}

выдаст

<e a="x&#x9;y&#xD;z&#xA;" />
0 голосов
/ 21 октября 2010

Я не нашел реального решения, поэтому я получил быстрое и грязное:

xml = xml.Replace("\t", "&#x9;").Replace("\r", "&#xA;");

лучше, чем ничего ...

...