繁体   English   中英

C#Winforms中的字符串提取

[英]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:

  1. 首先将xml文件加载到XMLDocument / XMLReader中,然后获取href属性值“ /Details/Empinfo.asp?empid=134”。
  2. 然后使用它实例化一个新的Uri类,然后使用Uri.Query属性,该属性将使您获得“?empid = 134”。
  3. 现在寻找第一个=,然后提取整个子串,这将使您获得134
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM