2013-02-14 3 views
-1

Я использую файл 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 
} 
+0

Вы пытались вывести некоторый xml с новой строкой, чтобы увидеть, что она делает внутри? –

+1

99% вы смотрите на строку в отладчике, и она показывает, что вы избегаете '\'. Обратите внимание, что неясно, что вы ожидаете увидеть там. –

+0

В отладчике в окне wpf нет никакой разницы. Я собираюсь изменить вопрос, чтобы все вы могли легко протестировать. – Goran

ответ

0

символов строки строка работает

btn.ToolTip = System.Text.RegularExpressions.Regex.Unescape(keys["A1"]); 

если кто-нибудь знает, как избежать побега во время чтения XML (чтобы прочитать его как будто нет), я был бы рад услышать об этом.

Смежные вопросы