Как мы можем просто назвать дочерний элемент f scxml not (child of child)? - PullRequest
0 голосов
/ 14 июня 2019

Я делаю парсер для диаграммы состояния XML с использованием C #. Как мы знаем, может быть 2 дочерних элемента XML-диаграммы состояний и параллельная, поэтому я делаю 2 функции: одну для состояния, а другую для параллельной. Как просто я могу называть потомков scxml не потомками своего потомка, в моем коде он вызывает все child + grandchild + grand_grand и так далее. Поэтому, пожалуйста, кто-нибудь объяснит, как просто вызывать child из 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 - это состояние, а дочерний элемент состояния параллелен, поэтому он также вызывает дочерний элемент child. XML-код

1 Ответ

0 голосов
/ 14 июня 2019

Я думаю, что вы хотите вызывать .Node, а не .Descendants, чтобы получить дочерние узлы, а не все узлы-потомки (например, внуки и т. Д.). Вы можете найти документацию по этому вопросу здесь: https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xcontainer.nodes?view=netframework-4.8#System_Xml_Linq_XContainer_Nodes

...