Я создаю файл XML с помощью С#, и мне нужно поместить несколько значений в один атрибут, значения атрибута не должны находиться в строке вне атрибута. Руководитель моей группы попросил сделать его более читабельным, добавив разрывы строк после каждого значения. Я очень борюсь с выяснением, как это сделать.
Результаты должны быть помещены в один атрибут, создание нескольких атрибутов или атрибут + строка не вариант.
Что я пробовал до сих пор:
\n\r выдает ошибку "Invalid XML NCName";


 выдает ошибку «Неверный 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" />`
Как я уже упоминал ранее, код упрощен, и в реальной жизни у меня гораздо больше значений в атрибуте, поэтому он довольно быстро забивается.
Что ж, чтобы выровнять их так, как вы хотите, вам нужно знать свой уровень отступа и кучу других вещей, отслеживать его, добавлять соответствующее количество пробелов, добавлять возвраты каретки и переводы строк. Все, чтобы было более "читабельно". Подумайте о том, чтобы попросить руководителя вашей группы использовать IDE, способную форматировать XML по своему вкусу.
См. ответ stackoverflow.com/a/14449850/1260204 в отмеченном дубликате. Вы захотите использовать XmlWriterSettings и свойства NewLineOnAttributes, NewLineChars, IndentChars. Вы, вероятно, сможете приблизиться к тому, о чем его спросили, но я сомневаюсь, что вы сможете сделать это именно так, как он/она хочет.
@Igor Notepad++ используется для просмотра XML-файла, он имеет подсветку синтаксиса, но, пожалуйста, имейте в виду, что каждый элемент имеет около 10 атрибутов сейчас, а позже их будет намного больше, поэтому он просто требует много горизонтальной прокрутки. Кроме того, XDocument, класс, который я использую из C#, похоже, игнорирует XmlWriterSettings. Я чувствую, что решение, которое я ищу, - это эффективная передача информации из информации, сохраненной через класс XDocument, в другой класс, такой как XmlTextWriter или XmlWriter, но я не уверен, как подойти это
Also XDocument, class that I am using from C#, seems to ignore XmlWriterSettings <= см. отвечать, о котором я упоминал выше в моем последнем комментарии. В нем есть целый фрагмент кода, который вы можете почти скопировать/вставить и использовать.





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