我们如何才能不将子元素f scxml称为(子元素child)?

时间:2019-06-14 08:44:23

标签: c# scxml

我正在使用C#为状态图XML解析器。众所周知,状态图XML状态可能有2个子状态,而并行则有2个子状态,因此我将2个函数分别用于状态和并行。我怎么能在我的代码中调用scxml的子级而不是它的子级的子级呢?它正在调用所有child + grandchild + grand_grand等等。

我试图称呼它的孩子,但所有孩子都来了

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的一个子状态是state,而state子状态是并行的,因此它也称为child的子状态。 xml代码是

1 个答案:

答案 0 :(得分:0)

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