C# 获取具有节点的所有节点。InnerText的类型为GUID

C# 获取具有节点的所有节点。InnerText的类型为GUID,c#,xml,xml-parsing,C#,Xml,Xml Parsing,仅使用XPath无法实现这一点,因此我们将合并一些LINQ和: *)关于这一主题的许多问题已在SO中发布。例如,这个答案中的正则表达式来自于不能仅使用XPath的,因此我们将合并一些LINQ和: *)关于这一主题的许多问题已在SO中发布。例如,这个答案中的正则表达式是fromhar07 GUID位于innertext之间。我们应该如何获得guids。选择(o=>o.innertext)。ToList()这就是您的意思,即获取GUID字符串列表而不是节点/元素吗?您的答案是正确的,但如果GUI

仅使用XPath无法实现这一点,因此我们将合并一些LINQ和:


*)关于这一主题的许多问题已在SO中发布。例如,这个答案中的正则表达式来自于不能仅使用XPath的

,因此我们将合并一些LINQ和:


*)关于这一主题的许多问题已在SO中发布。例如,这个答案中的正则表达式是from

har07 GUID位于innertext之间。我们应该如何获得
guids。选择(o=>o.innertext)。ToList()
这就是您的意思,即获取GUID字符串列表而不是节点/元素吗?您的答案是正确的,但如果GUID“b034879a-ab31-4570-b2f6-bfd650d0ee67”,则还有一种情况在任何字符串之间,如“abc#$%%”-#%%b034879a-ab31-4570-b2f6-bfd650d0ee67#$%kgklsgksgmks”,我需要它too@John在这种情况下,您需要使用regex。。。检查更新的应答感谢您的应答har07 GUID位于innertext之间我们应该如何获取
GUID。选择(o=>o.innertext)。ToList()
这就是您的意思,即获取GUID字符串列表而不是节点/元素吗?您的答案是正确的,但如果GUID为“b034879a-ab31-4570-b2f6-bfd650d0ee67”,则还有一种情况在任何字符串之间,如“abc#$%%”-#%%b034879a-ab31-4570-b2f6-bfd650d0ee67#$%kgklsgksgmks”,我需要它too@John在这种情况下,您需要使用regex。。。查看更新的答案谢谢您的回答
<Step ID="6">
    <ACTION>Object Information</ACTION>
    <CLASS_ID>ControlType.Button</CLASS_ID>
    <UUID>5170c4b8-a949-49ed-bcf5-b0f689b8ec0d</UUID>   
    <ACTION_INFO>0bbde809-83c6-4f69-8b73-d20e193ddb89</ACTION_INFO>
    <REPOSITOR>OK</REPOSITOR>    
  </Step>
  <Step ID="7">
    <ACTION>Object Information</ACTION>
    <CLASS_ID>ControlType.Button</CLASS_ID>
    <UUID>5170c4b8-a949-49ed-bcf5-b0f689b8ec0d</UUID>   
    <REPOSITOR>0bbde809-83c6-4f69-8b73-d20e193ddb89</REPOSITOR>
    <TUID>Handle ,5000(ms),b034879a-ab31-4570-b2f6-bfd650d0ee67,5</TUID>
    <SUBACTION>OK</SUBACTION>        
  </Step>
   XMLNodeList l_NodeToAppend = xDoc.SelectNodes("//text()"+"of type guid or guid in between string");
var guids = xDoc.SelectNodes("//Step/*")
        .Cast<XmlNode>()
        .Where(e => 
        {
            Guid temp;
            return Guid.TryParse(e.InnerText, out temp);
        })
        .ToList();
var pattern = "[a-fA-F0-9]{8}-([a-fA-F0-9]{4}-){3}[a-fA-F0-9]{12}";
var r = new Regex(pattern);

var guids = from e in xDoc.SelectNodes("//Step/*").Cast<XmlNode>()
        let m = r.Match(e.InnerText)
        where m.Success
        select m.Value;