Я использую файл XML, чтобы сохранить некоторые ключ/значение данных:Чтение/запись новой строки из/в XML
<Resource Key="A1" Value="Some text" />
Что я имею проблемы с, то, как бы я сохранить данные/нагрузки в стоимости, если это многострочный текст?
<Resource Key="A2" Value="Some text\nin two lines" />
, который должен, при отображении, в результате
Some text
in two lines
Если я прочитал выше ресурс с помощью
XDocument document = XDocument.Load(filePath);
// get all the localized client resource strings
var resource = (from r in document.Descendants("Resource")
where r.Attribute("Key").Value == "A2"
select r).SingleOrDefault();
он будет читать его с двойной обратной косой черты:
Some text\\nin two lines.
Итак, как я могу прочитать/сохранить новый lin e character - это какой-то текст, который, например, может быть позже показан в приложении WPF или в веб-приложении?
Edit: вот пример (правильно пишет, читает неправильно):
<!-- WPF window xaml code -->
<Grid>
<Button Name="btn" Content="Click me" />
</Grid>
// WPF window code behind
public MainWindow()
{
InitializeComponent();
XDocument doc =
new XDocument(
new XElement("Resources",
new XElement("Resource", new XAttribute("Key", "A1"), new XAttribute("Value", @"Some text\nin two lines")))
);
const string fileName = @"D:\test.xml";
doc.Save(fileName);
doc = XDocument.Load(fileName);
IDictionary<string, string> keys = (from c in doc.Descendants("Resource")
select c).ToDictionary(c => c.Attribute("Key").Value, c => c.Attribute("Value").Value);
btn.ToolTip = keys["A1"];
//btn.ToolTip = "Some text\nin two lines"; // if you uncomment this line, it works as expected
}
Вы пытались вывести некоторый xml с новой строкой, чтобы увидеть, что она делает внутри? –
99% вы смотрите на строку в отладчике, и она показывает, что вы избегаете '\'. Обратите внимание, что неясно, что вы ожидаете увидеть там. –
В отладчике в окне wpf нет никакой разницы. Я собираюсь изменить вопрос, чтобы все вы могли легко протестировать. – Goran