#c# #xml #streamwriter #xmlwriter
#c# #xml #streamwriter #xmlwriter
Вопрос:
Во-первых, мне не нравится это делать. Это не мой выбор.
Мне нужно записать информацию в XML-документ. Простое содержимое xml может содержать amp;’s. Я хочу, чтобы они записывались в файл как просто amp;
, а не amp;amp;
Как мне это сделать? Я предполагаю, что он включает StreamWriter и что-то вроде:
private void SaveCaption_Click(object sender, EventArgs e)
{
if (saveCaptionDialog.ShowDialog() == DialogResult.OK)
{
using (StreamWriter writer = new StreamWriter(saveCaptionDialog.FileName, null))
{
using (XmlWriter xmlWriter = XmlWriter.Create(writer))
{
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 4;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("tt");
...
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
}
}
//streamWriter do your thing
}
}
Комментарии:
1. Записать все это в строку, а затем
Replace("amp;amp;", "amp;")
на нее?2. Почему это не ваш выбор и почему вы бы сделали это И сохранили XML в качестве выбранного вами формата? Вы не сможете его разобрать!
3. @SpaceBison — Мое предположение? Потому что нам не всегда удается написать код для взаимодействия с системами, совместимыми со стандартами.
4. @antiduh Я признаю реальность вашего заявления, однако мне трудно хотеть иметь XML, который не может использоваться другой системой, без какой-либо «фиксации» его….
5. @SpaceBison Для видеопроигрывателя limelight, который мы используем, требуется документ xml для отображения подписей. Все способы кодирования ‘amp;’ отображаются как их эквивалент обычного текста (например, «amp;amp;»)
Ответ №1:
Пожалуйста, делайте это только в случае крайней необходимости; это не соответствует стандартам XML.
Только вы можете предотвратить срабатывание XML.
Используйте WriteRaw()
метод:
XmlWriter writer;
writer = XmlWriter.Create( @"C:usersaccountdesktoptest.xml" );
writer.WriteStartDocument();
writer.WriteStartElement( "TestElement" );
writer.WriteRaw( "Hello amp; goodbye" );
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();
Который генерирует вывод:
<?xml version="1.0" encoding="utf-8"?><TestElement>Hello amp; goodbye</TestElement>