У нас есть модель, которая содержит пакеты и подпакеты. Так как мы можем переместить указатель на конкретный пакет по имени пакета. Так есть какой-либо способ итерации по модели и получения пакет по имениКак получить доступ к пакету по названию
ответ
Использование
Repositore.SQLQuery("SELECT package_id FROM t_package WHERE name=<theName>")
Это возвращает результирующий XML набор, содержащий все пакеты с именем, которое вы ищете. Это может выглядеть следующим образом:
<?xml version="1.0"?>
<EADATA version="1.0" exporter="Enterprise Architect">
<Dataset_0><Data><Row><package_id>1</package_id></Row><Row><package_id>2</package_id></Row><Row><package_id>3</package_id></Row></Data></Dataset_0></EADATA>
Таким образом, вы можете либо материал, который в XML-парсер или использовать регулярное выражение как
/package_id>(\d+)/
фильтровать все пакеты-идентификаторы.
В свою очередь, просто использовать
Repository.GetPackageById(<found id>)
для доступа найденного пакета (ов).
Как было отмечено в комментарии, это будет работать:
List<EA.Package> myPacks = new List<EA.Package>();
public void GOThroughAllPackages(EA.Package dumpPackage)
{
foreach (EA.Package packages in dumpPackage.Packages)
{
if(packages.Name.ToLower().Equals(requiredPackName))
{
myPacks.Add(packages);
break;
}
GOThroughAllPackages(packages);
}
}
Это не решает и просто ищет пакеты верхнего вида. (Вам нужно отступывать свой код 4 пробела) –
Спасибо Томас за то, что указал, сделал изменения – GuestUser
Ну, теперь он рекурсирует, но что, если пакетов больше, чем одного с именем? Он возвращает только последний (самый глубокий уровень рекурсии). Скорее, он должен создать список пакетов. –
Альтернативное решение (C#), который не требует разбора XML строку:
List<EA.Package> packages = new List<EA.Package>();
string searchValue = "somePackageName";
var packageElements = Repository.GetElementSet("select o.Object_ID from t_object o inner join t_package p on p.ea_guid = o.ea_guid where o.Name = '"+searchValue+"'",2);
foreach (EA.Element packageElement in packageElements)
{
packages.Add(Repository.GetPackageByGuid(packageElement.ElementGUID);)
}
Он использует Repository.GetElementSet()
с параметром 2
, в котором говорится, что он принимает SQL-запрос.
Обратите внимание, что это решение не будет возвращать корневые пакеты, поскольку у них нет аналога t_object
.
- 1. Как получить доступ к свойствам по названию?
- 2. Как получить доступ к пакету через Package.getPackage (...)?
- 3. Как получить доступ к моему пакету?
- 4. Как получить доступ к пакету pref pane?
- 5. Доступ к полям по всему пакету
- 6. Доступ к названию статьи по названию статьи в ASP.NET MVC2
- 7. Как получить доступ к ресурсам по названию в android
- 8. Доступ к данным/пакету scorm
- 9. Доступ к этому названию объекта
- 10. Xcode - проект «Панель предпочтений» - как получить доступ к пакету?
- 11. Как ограничить доступ к пакету nuget?
- 12. Как получить доступ к пакету приложения командной строки в C
- 13. Как получить доступ к пакету «разрешений» в Apache Jena?
- 14. Как получить доступ к пакету с использованием типа доступа?
- 15. Получить маршрут по названию
- 16. jQuery + доступ к названию функции
- 17. Доступ к названию объекта объекта
- 18. Получить элемент списка по названию
- 19. Почему Java сделал доступ к пакету по умолчанию?
- 20. Получить класс по названию
- 21. Доступ к расширенным пользовательским полям по названию страницы
- 22. Как получить доступ к названию сайта из поиска Google
- 23. Как получить доступ к названию объекта в v-for
- 24. Как получить доступ к названию приложения Spring Boot Programme?
- 25. Как получить доступ к тестовому названию теста FlexUnit 4?
- 26. Как получить доступ к названию названия UIView из другого UIView?
- 27. Как получить доступ к названию активированного события из функции слушателя?
- 28. Как получить доступ к названию теста NUnit программно?
- 29. ng-repeat: Как получить доступ к названию поля
- 30. Не удается получить доступ к пакету/пакет не существует
Можем ли мы получить объект типа EA.Package из этого –
см. Мое издание о том, как получить доступ к элементам пакета. –