XML разобрать несколько слов в одном узле? - PullRequest
2 голосов
/ 02 декабря 2011

У меня есть такой XML-код:

<item>
<name>chuck - norris</name>
</item>

Я могу получить оттуда полное имя и добавить его в список со следующим:

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

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;

.......

Но как я могу заменить это? "- "с разрывом строки, чтобы я мог получить:

Чак

Норрис

вместо:

Чак - Норрис

и какполучить только имя?

Ответы [ 5 ]

2 голосов
/ 02 декабря 2011

Без проверки:

string[] segments = "Chuck - Norris".Split('-');
string firstName = segments[0].Trim();
string lastName = segments[1].Trim();
1 голос
/ 02 декабря 2011

Используйте Linq to 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 голосов
/ 02 декабря 2011

Пример кода:

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());
            }
        }
    }
}
0 голосов
/ 02 декабря 2011

Если ваш разрыв строки для текстового поля, вам нужно. Заменить его с "-" на "\ r \ n".

Если это для элемента HTML, .replace "-" с ""

И если вам нужно разбить их, чтобы вы знали одно из другого, используйте .split

0 голосов
/ 02 декабря 2011

Не уверен, что это то, что вы ищете.

String sArray = Helper.Split('-');
foreach (String str in sArray)
Console.Writeline(Str+"\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...