2009-11-11 160 views
0

假设我有一个字符串,它看起来像以下:提取信息

string foo ="<add key="key1" Value="val1"/> 
    <add key="key2" Value="val2"/> 
    <add key="key3" Value="val3"/>" 

frrom这个字符串,我需要通过循环,让每一个键值对,并做一些与他们。 我该怎么做?

谢谢

回答

8

这实际上是XML吗?如果是这样,请使用XML解析器。如果它是一堆的元素,但没有一个“根”元素,你也可以添加到开始和结束:

string xml = "<foo>" + foo + "</foo>"; 

,然后使用XML解析器。

编辑:好吧,如果它是XML,你应该肯定使用XML解析器。否则,你可以很容易地运行与编码值等问题

+0

的字符串就是一个XML的一堆从中我只需要得到键和值。 – raklos 2009-11-11 14:54:04

+0

Jon使用xml解析器的权利要比试图自行解决这个问题容易得多。使用它的开销很小,好处很大。 – kemiller2002 2009-11-11 14:58:07

+0

你能说“XLINQ”吗? – 2009-11-11 15:16:34

0

(1)第一删除这些字符:<,/,>” (2)上拆分‘=’

请注意,用下面的代码,玩的循环值(指数超出范围..等)

编辑:

private Dictionary[] ExtractValuePair(string PString) { 
    Of; 
    String; 
    String; 
    Dictionary _dc = new Dictionary(Of, String, String); 
    string[] _tmpStr; 
    PString = PString.Replace("<", "").Replace(">", "").Replace("/", "").Replace('"', "").Replace("add key", "").Replace("Value", ""); 
    _tmpStr = PString.Split("="); 
    int i; 
    for (i = 1; (i 
       <= (_tmpStr.Length - 2)); i++) { 
     _dc.Add(_tmpStr[i], _tmpStr[(i + 1)]); 
    } 
    return _dc; 
} 
+0

根据我的回答评论:尝试''并且看看你得到了什么结果。还有很多其他的破坏我可以给出的例子,但这是一个开始...... – 2009-11-11 16:12:51

+0

它可以制动的情况是:<,>,/,'add key','Value'尖括号可以解决,因为XML编码会使它们逃脱,将代码更改为不转义将很容易。唯一的问题是:'/','添加键'和'值'。一点点的进一步编码可以被克服 – Darknight 2009-11-11 16:59:45

+0

@Darknight:当XML解决方案实际上只有几行时,听起来像是非常多的工作。你还没有发现以前的问题 - 你有多确信现在你已经找出了可能出错的一切?为了避免使用内置的XML库,您愿意花费多少时间才能使这一切正常工作?你从这些工作中获得了什么好处?也许你想要实现自己的字符串类以及下一个? – 2009-11-11 17:26:00