xml解析单个节点中的多个单词?

时间:2011-12-02 16:18:17

标签: c# xml parsing

我有一个像这样的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 个答案:

答案 0 :(得分:2)

没有任何检查:

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

答案 1 :(得分: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'));
                        });

答案 2 :(得分:0)

不确定这是否是您要找的。

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

答案 3 :(得分:0)

如果你的换行符是一个文本框,你需要将它从“ - ”替换为“\ r \ n”。

如果是HTML元素,请使用“&lt; br /&gt;”替换“ - ”

如果你需要打破它们以便彼此认识,请使用.split

答案 4 :(得分: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());
            }
        }
    }
}