0

我正在使用 C# 为状态图 XML 制作解析器。正如我们所知,状态图 XML 状态和并行可能有 2 个子级,因此我制作了 2 个函数,一个用于状态,另一个用于并行。我如何才能在我的代码中调用 scxml 的子代而不是其子代的子代,它正在调用所有子代+孙代+grand_grand 等等。所以请有人解释一下如何只调用 scxml 的子代

我试图给它的孩子打电话,但它所有的孩子都来了

public static void Main(string[] args)
{
    var 
    xdocXDocument.Load(@"C:/Users/path.xml");

    IEnumerable<XElement> de = from el in xdoc.Descendants() select el;
    foreach (XElement el in de)
    {
        if (string.Equals(el.Name.ToString(), "state", StringComparison.InvariantCultureIgnoreCase))
        {
            stat(el);
        }
        else if (string.Equals(el.Name.ToString(), "parallel", StringComparison.InvariantCultureIgnoreCase))
        {
            parr(el);
        }

    }
}

错误是在我的 xml 中,xml 的一个子项是状态,并且状态子项是并行的,因此它也调用子项的子项。xml代码是

4

1 回答 1

0

我认为您想调用 .Nodes 而不是 .Descendants 来获取子节点,而不是所有后代节点(例如孙子等)。您可以在此处找到相关文档:https ://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xcontainer.nodes?view=netframework-4.8#System_Xml_Linq_XContainer_Nodes

于 2019-06-14T09:42:21.133 回答