你可以换一种思路通过将字符串读取到dataset里面,再去操作dataset
string xmlStr = "xml字符串";
DataSet dataSet = new DataSet();
dataSet.ReadXml(new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(xmlStr)));
能实现? string name=dataSet.ReadXml(new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(xmlStr))); 就可以? 那取出节点里不重复的该怎么做勒,能帮我写全点吗 ?
我是新手 怎么操作啊 ?
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: 谢谢,我测试过 这样能取出来 那请问 我是要取出不重复的具体该怎么做啊 ? 最后还是字符串格式 比如 上面的 最后成为 “文件管理,test”
@miloss:
现在这个给你取出来的就是不重复的呀
正则对大的字符串,搜索还是比较慢的,建议还是尽量朝xml方向靠
能具体说怎么操作码?