2011-08-31 27 views
5

Tôi đang điền một TreeView với các nút dựa trên một tài liệu XML. Tuy nhiên, có vẻ như khi tôi đặt giá trị của thuộc tính vào một hộp văn bản, nó sẽ mất các dòng/tab trả về/các dòng mới.Mất các dòng mới với XDocument

Tôi bắt đầu bằng cách thêm một loạt các nút có "tên tác vụ". Mỗi tác vụ có một hoặc nhiều truy vấn trong tài liệu XML. Cũng giống như vậy: <Tasks><Task name="aTaskName"><Queries><add Query="a long string with tabs and newlines and such" /></Queries></Task> ... </Tasks>

void PopulateQueries(XDocument doc, TreeView tree) 
{ 
    foreach (TreeNode node in tree.Nodes) 
    { 
     var taskName = node.Text; 
     var queriesNode = node.Nodes.Add("Queries"); 
     var queries = doc.Descendants("Tasks") 
      .Descendants("Task") 
      .Where(d => d.Attribute("name").Value == taskName) 
      .Descendants("Queries") 
      .Descendants("add") 
      .ToList(); 

     for (int i = 0; i < queries.Count;i++) 
     { 
      queriesNode.Nodes.Add(queries[i].Attribute("Query").Value, "query" + i); 
     } 
    } 
} 

Sau đó trong một sự kiện nút bấm:

void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    textBoxRaw.Text = string.Empty; 
    if (e.Node.Text.StartsWith("query")) 
    { 
     textBoxRaw.Text = e.Node.Name; 
    } 
} 

Các truy vấn thuộc tính giá trị chứa một truy vấn SQL dài với dòng mới, các tab, vv Tuy nhiên, không ai trong số đó dường như hiển thị trong hộp văn bản (multiline), mặc dù tất cả tiếng hét của tôi tại Visual Studio. Tôi đang làm gì sai? Ngoài ra, var doc = XDocument.Load(filename, LoadOptions.PreserveWhitespace); dường như không hoạt động.

Trả lời

9

XML processors must normalize attribute values by converting their whitespace characters (CR, LF, HT, etc) to a single space.

Nếu bạn muốn có giá trị với các ký tự như vậy, bạn nên xem xét việc đặt chúng dưới dạng nút văn bản thay vì giá trị thuộc tính.

+1

+1 đây là những gì tôi đang cố gắng nói trong nhận xét của mình. –

+0

Yikes. Vâng, đó không thực sự là một lựa chọn trong trường hợp của tôi. –

Các vấn đề liên quan