[英]String extraction in c# winforms
我有一个这样的xml文件
<div class="details">
<a href="/Details/Empinfo.asp?empid=134">Employee details</a>
</div>
现在我想从c#winforms中的给定xml文件中获取Empid(即134)。 有人可以帮我怎么获得身份证
提前致谢
有关快速的EmpID,请参见以下内容:
string xml = @"<div class=""details""><a href=""/Details/Empinfo.asp?empid=134"">Employee details</a></div>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string strEmpID = node.Attributes[@"href"].Value.ToString().Split(new char[] { '=' })[1];
如果您需要所有EmpID,则可以执行以下操作:
private List<string> GetAllEmpIDs(string xml, string strTag/*Example: @"href" */, char[] caSplitBy, int nItemNumber /*second item in array, 1*/)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
List<string> lstEmpID = new List<string>();
foreach(XmlNode node in doc.DocumentElement.ChildNodes)
{
lstEmpID.Add(node.Attributes[strTag].Value.ToString().Split(caSplitBy)[nItemNumber]);
}
return lstEmpID;
}
用法:
List<string> lstEmpID= GetAllEmpIDs(@"<div class=""details""><a href=""/Details/Empinfo.asp?empid=134"">Employee details</a></div>",
@"href",
new char[] { '=' },
1
);
让我知道,如果以上没有帮助! (0:
function NameYourFunction(string xmlFile){
XmlDocument xml = new XmlDocument();
xml.Load(xmlFile);
XmlNode xnode = xml.DocumentElement;
for (int i = 0; i < xnode.ChildNodes.Count; i++)
{
string href = xnode.ChildNodes[i].Attributes["href"].Value;
string empid = href.Substring(href.IndexOf('='),(href.Length - href.IndexOf('='))+1);
}
}
请检查一下。 还没有尝试过。
如果您确定xml文件不会包含其他数字,则可以执行以下操作:
Regex.Match(File.ReadAllText(filename), @"\d+").Value
另外,如果您有多个ID,则可以使用Regex.Matches。 否则,您必须解析xml文件以找到另一个答案中指出的正确元素。
每个评论的更新:
Regex.Match(File.ReadAllText(filename),
@"empid=(?<EmployeeID>[^""]+)").Groups["EmployeeID"].Value
尝试这样的事情:
using System;
using System.Linq;
using System.Xml.Linq;
using System.Web;
class Example
{
static void Main()
{
String xml = @"<div class=""details"">
<a href=""/Details/Empinfo.asp?empid=134"">
Employee details</a>
</div>";
String[] queryString = XElement.Parse(xml)
.Descendants("a")
.Attributes("href")
.FirstOrDefault()
.Value
.Split('?');
String empId = HttpUtility
.ParseQueryString(queryString[1])["empid"];
}
}
我不建议对此类内容使用正则表达式-最好使用某种XML API(我在这里使用LINQ to XML),然后解析结果字符串。
我建议将xml文件读取为Text,然后使用RegEx Expression提取员工。 像这样
Using System.Text.RegularExpression;
public ArraList() GetEmployeeList(string XmlText){
ArrayList lst = new ArrayList();
RegEx regExp = new RegEx(@"\d{3}");
MatchCollection mstLst = regExp.Matches(Xmltext);
foreach(Match iMatch in mstLst){
lst.Add(iMatch.Value.ToString());
}
Return lst;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.