【问题标题】:xml parse multiple words in single node?xml 在单个节点中解析多个单词?
【发布时间】:2011-12-02 16:18:17
【问题描述】:

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

.......

但是我怎样才能用换行符替换那个“ - ”,这样我才能得到:

查一下

诺里斯

代替:

查克-诺里斯

以及如何只获得名字?

【问题讨论】:

  • 您尝试过使用拆分吗?

标签: c# xml parsing


【解决方案1】:

没有任何检查:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢,这正是我想要的!
    【解决方案3】:

    不确定这是否是您要查找的内容。

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

    【讨论】:

      【解决方案4】:

      如果换行符用于文本框,则需要将其从“-”替换为“\r\n”。

      如果是 HTML 元素,请将“-”替换为“

      如果您需要将它们分开以便彼此了解,请使用 .split

      【讨论】:

        【解决方案5】:

        示例代码:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-17
          • 2018-05-27
          • 2017-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          相关资源
          最近更新 更多