Добавление разрыва строки внутри XML-атрибута

Я создаю файл XML с помощью С#, и мне нужно поместить несколько значений в один атрибут, значения атрибута не должны находиться в строке вне атрибута. Руководитель моей группы попросил сделать его более читабельным, добавив разрывы строк после каждого значения. Я очень борюсь с выяснением, как это сделать.

Результаты должны быть помещены в один атрибут, создание нескольких атрибутов или атрибут + строка не вариант.

Что я пробовал до сих пор:

  • \n\r выдает ошибку "Invalid XML NCName";

  • &#10&#13 выдает ошибку «Неверный XML NCName»;

  • Мне не удалось найти класс, отличный от XDocument в C#, который позволяет мне красиво размещать несколько переменных в одном атрибуте и поддерживает разрывы строк.

Код упрощен, но в этом и заключается идея рабочего процесса.

XDocument doc = new XDocument(
                  new XDeclaration("1.0", "utf-8", "yes"),
                  new XComment(" XML File "),
                );

new XElement("Source1",
                new XAttribute("id", SourceID[i]),
                new XAttribute("active", SourceAct[i])
                new XAttribute("gainDB", SourceGain[i]);

new XElement("Audio",
            new XAttribute("id", IDSorted[i]),
            new XAttribute("file", PathList[i])
        )

doc.Save(@"XMLFiles/" + Description + ".xml");

Что печатает:

<Source1 id = "src:BlueSphere" gainDB = "3.4" active = "True" />
<AudioStream id = "signal:violine" file = "Assets/Audio/myaudio.wav" />`

Что мне нужно:

<Source1 id = "src:BlueSphere" 
         gainDB = "3.4" 
         active = "True"/>
<AudioStream id = "signal:violine" 
         file = "Assets/Audio/myaudio.wav" />`

Как я уже упоминал ранее, код упрощен, и в реальной жизни у меня гораздо больше значений в атрибуте, поэтому он довольно быстро забивается.

Зачем вам именно это? Просто для большей читабельности? В таком случае, почему бы вместо этого не использовать средство просмотра текста с правильной подсветкой синтаксиса....

Igor 14.02.2019 18:34

Что ж, чтобы выровнять их так, как вы хотите, вам нужно знать свой уровень отступа и кучу других вещей, отслеживать его, добавлять соответствующее количество пробелов, добавлять возвраты каретки и переводы строк. Все, чтобы было более "читабельно". Подумайте о том, чтобы попросить руководителя вашей группы использовать IDE, способную форматировать XML по своему вкусу.

Heretic Monkey 14.02.2019 18:35

См. ответ stackoverflow.com/a/14449850/1260204 в отмеченном дубликате. Вы захотите использовать XmlWriterSettings и свойства NewLineOnAttributes, NewLineChars, IndentChars. Вы, вероятно, сможете приблизиться к тому, о чем его спросили, но я сомневаюсь, что вы сможете сделать это именно так, как он/она хочет.

Igor 14.02.2019 18:42

@Igor Notepad++ используется для просмотра XML-файла, он имеет подсветку синтаксиса, но, пожалуйста, имейте в виду, что каждый элемент имеет около 10 атрибутов сейчас, а позже их будет намного больше, поэтому он просто требует много горизонтальной прокрутки. Кроме того, XDocument, класс, который я использую из C#, похоже, игнорирует XmlWriterSettings. Я чувствую, что решение, которое я ищу, - это эффективная передача информации из информации, сохраненной через класс XDocument, в другой класс, такой как XmlTextWriter или XmlWriter, но я не уверен, как подойти это

Jellyracecar 14.02.2019 18:49
Also XDocument, class that I am using from C#, seems to ignore XmlWriterSettings <= см. отвечать, о котором я упоминал выше в моем последнем комментарии. В нем есть целый фрагмент кода, который вы можете почти скопировать/вставить и использовать.
Igor 14.02.2019 18:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
502
1

Ответы 1

Попробуйте использовать &#10;&#13; в атрибуте вместо #&10#&13

Да, извините, это то, что я пытался. В исходном сообщении была опечатка, но это &#10;&#13; что я использую

Jellyracecar 14.02.2019 18:49

Другие вопросы по теме