2011-12-02 62 views
2

我有一個這樣的XML:xml在單個節點中解析多個單詞?

​​

我可以從那裏得到全名,並將其添加與此有關的ListBox:

....... 
....... 

public class helperclass 
{ 
    string helper; 
    public string Helper 
    { 
     get {return helper; } 
     set {helper = value; } 
    } 
} 

....... 
....... 

//xml comes from internet 

void something_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
XElement xml = XElement.Parse(e.Result); 

var info = from somexml in xml.Descendants("item") 
    select new helperclass 
    { 
     Helper = (string)somexml.Element("name") 
    }; 

listBox1.ItemsSource = info; 

....... 

但我怎麼能取代「 - 」與換行符這樣我就可以得到:

夾頭

諾里斯

代替:

查克 - 諾里斯

,以及如何獲得唯一名字?

+1

您是否嘗試過使用分割? – Venki

回答

1

使用LINQ到XML,而不是:

  var listOfStringsYouWant = new List<string>(); 
     var doc = XDocument.Load("placeXMLHere"); 
     // finds every node of item 
     doc.Descendants("item").ToList() 
      .ForEach(item => 
         { 
          listOfStringsYouWant.Add(item.Element("name").Value.Replace('-', '\r\n')); 
         }); 
+0

謝謝,正是我在找! – ele3esko

2

沒有任何檢查:

string[] segments = "Chuck - Norris".Split('-'); 
string firstName = segments[0].Trim(); 
string lastName = segments[1].Trim(); 
0

不知道這是你在找什麼。

String sArray = Helper.Split('-'); 
foreach (String str in sArray) 
Console.Writeline(Str+"\n"); 
0

如果您的換行符是一個文本框,您需要將它從「 - 」替換爲「\ r \ n」。

如果它是一個HTML元素,.replace「 - 」與「< BR />」

如果你需要打破他們讓你知道從另一個,使用.split

0

示例代碼:

namespace XMLParser 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      XElement items = XElement.Load(@"C:\XMLParser\items.xml"); 

      var filteredItems = from item in items.Descendants("item") 
           select item.Element("name"); 

      foreach (var item in filteredItems) 
      { 
       // Replacing " - " with NewLine 
       Console.WriteLine(item.Value.Replace(" - ", 
                System.Environment.NewLine)); 

       // Only First name 
       Console.WriteLine(item.Value.Split().First()); 
      } 
     } 
    } 
}