2011-08-31 15 views
5

के साथ नई पंक्तियां खोना मैं एक XML दस्तावेज़ के आधार पर नोड्स के साथ एक वृक्ष दृश्य को पॉप्युलेट कर रहा हूं। हालांकि, ऐसा लगता है कि जब मैं एक टेक्स्टबॉक्स में एक विशेषता का मूल्य डालता हूं, तो यह इसकी न्यूलाइन/कैरिज रिटर्न/टैब खो देता है।XDocument

मैं "कार्य नाम" के साथ नोड्स का एक गुच्छा जोड़कर शुरू करता हूं। प्रत्येक कार्य में XML दस्तावेज़ में एक या अधिक प्रश्न हैं। इसलिए जैसा: <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); 
     } 
    } 
} 
एक नोड क्लिक करें घटना में बाद

:

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

क्वेरी विशेषता मान नई-पंक्तियों, टैब, आदि के साथ एक लंबी SQL क्वेरी शामिल लेकिन उस में से कोई भी में दिखाने के लिए लगता है विजुअल स्टूडियो पर मेरे सभी चिल्लाने के बावजूद (मल्टीलाइन) टेक्स्ट बॉक्स। मैं क्या गलत कर रहा हूं? इसके अलावा, var doc = XDocument.Load(filename, LoadOptions.PreserveWhitespace); या तो काम नहीं कर रहा है।

उत्तर

9

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

यदि आप ऐसे पात्रों के साथ मूल्य रखना चाहते हैं, तो आपको उन्हें विशेषता मानों के बजाय टेक्स्ट नोड्स के रूप में रखने पर विचार करना चाहिए।

+1

+1 यही वह है जो मैं अपनी टिप्पणी में कहने की कोशिश कर रहा था। –

+0

यिक्स। खैर, यह वास्तव में मेरे मामले में एक विकल्प नहीं है। –

संबंधित मुद्दे