XML解析单个节点中的多个单词

本文关键字:单词 节点 单个 XML | 更新日期: 2023-09-27 18:16:23

我有一个这样的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;
.......

但是我如何用换行符替换"-",这样我就可以得到:

查克

诺里斯

代替:

chuck - norris

和如何只得到名字?

XML解析单个节点中的多个单词

无需任何检查:

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

使用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'));
                        });

不确定这是否是您正在寻找的。

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

如果您的换行符用于文本框,则需要将其从" - "替换为"'r'n"。

如果是HTML元素,.将" - "替换为"
"

如果你需要将它们分开以便区分它们,使用。split

示例代码:

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());
            }
        }
    }
}