首页 新闻 会员 周边 捐助

复杂的 正则

0
悬赏园豆:20 [已解决问题] 解决于 2012-12-19 12:47
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfSpecialtyEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <SpecialtyEntity>
    <LoginNameList>HQCEC\h2255cjh</LoginNameList>
    <Name>文件管理</Name>
    <NameList>陈景花</NameList>
  </SpecialtyEntity>
  <SpecialtyEntity>
    <LoginNameList>HQCEC\h4587wjh</LoginNameList>
    <Name>文件管理</Name>
    <NameList>王静湖</NameList>
  </SpecialtyEntity>
  <SpecialtyEntity>
    <LoginNameList>HQCEC\h4587wjh</LoginNameList>
    <Name>test</Name>
    <NameList>王静湖</NameList>
  </SpecialtyEntity>
</ArrayOfSpecialtyEntity>        我只能读这字符串,不能直接读XML   匹配出 文件管理,test    也就是<Name>里面的字 不能重复!
miloss的主页 miloss | 菜鸟二级 | 园豆:254
提问于:2012-12-18 10:12
< >
分享
最佳答案
0

你可以换一种思路通过将字符串读取到dataset里面,再去操作dataset

string   xmlStr   =   "xml字符串";
DataSet   dataSet  
=   new   DataSet();   
dataSet.ReadXml(
new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(xmlStr)));

收获园豆:20
Rich.T | 老鸟四级 |园豆:3440 | 2012-12-18 10:19

 能实现? string name=dataSet.ReadXml(new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(xmlStr)));  就可以?  那取出节点里不重复的该怎么做勒,能帮我写全点吗 ?

miloss | 园豆:254 (菜鸟二级) | 2012-12-18 10:25

 我是新手  怎么操作啊 ?

miloss | 园豆:254 (菜鸟二级) | 2012-12-18 10:39

var str = @"<?xml version='1.0' encoding='utf-16'?>
            <ArrayOfSpecialtyEntity xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
                <SpecialtyEntity>
                <LoginNameList>HQCEC\h2255cjh</LoginNameList>
                <Name>文件管理</Name>
                <NameList>陈景花</NameList>
                </SpecialtyEntity>
                <SpecialtyEntity>
                <LoginNameList>HQCEC\h4587wjh</LoginNameList>
                <Name>文件管理</Name>
                <NameList>王静湖</NameList>
                </SpecialtyEntity
                <SpecialtyEntity>
                <LoginNameList>HQCEC\h4587wjh</LoginNameList>
                <Name>test</Name>
                <NameList>王静湖</NameList>
                </SpecialtyEntity>
            </ArrayOfSpecialtyEntity>";
var match = System.Text.RegularExpressions.Regex.Matches(str, @"<Name>(\w+)</Name>");
var list = new List<string>();
foreach (System.Text.RegularExpressions.Match item in match)
{
    var name = item.Value.Replace("<Name>", "").Replace("</Name>", "");
    if (!list.Contains(name))
    {
        list.Add(name);
    }
}

Rich.T | 园豆:3440 (老鸟四级) | 2012-12-18 10:49

@Rich.T: 谢谢,我测试过 这样能取出来   那请问 我是要取出不重复的具体该怎么做啊 ? 最后还是字符串格式   比如 上面的   最后成为  “文件管理,test”

miloss | 园豆:254 (菜鸟二级) | 2012-12-18 10:59

@miloss: 

现在这个给你取出来的就是不重复的呀

Rich.T | 园豆:3440 (老鸟四级) | 2012-12-18 12:53
其他回答(1)
0

正则对大的字符串,搜索还是比较慢的,建议还是尽量朝xml方向靠

狼图腾TOP | 园豆:322 (菜鸟二级) | 2012-12-18 10:25

能具体说怎么操作码?

支持(0) 反对(0) miloss | 园豆:254 (菜鸟二级) | 2012-12-18 10:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册