Как в 2019: API 28 "versionCode" удерживается от использования , таким образом, мы можем использовать пример кода "longVersionCode"
в kotlin
val manager = context?.packageManager
val info = manager?.getPackageInfo(
context?.packageName, 0
)
val versionName = info?.versionName
val versionNumber = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
info?.longVersionCode
} else {
info?.versionCode
}
Я не думаю, что он отвечает всем указанным вами требованиям, но рассматривали ли вы возможность работы с XML DOM (в отличие от HTML DOM)? Вы можете создать XML-документ программно в .NET и управлять им с помощью методов и свойств DOM, а также выполнять такие действия, как запросы XPath. Ознакомьтесь с объектом .NET XmlDocument . Это могло бы быть разумной отправной точкой.
Eclipse EMF может помочь, но для вас это тоже может быть излишним. ИМХО, хорошо разработанный язык должен сделать такую задачу чрезвычайно простой ...
Платформа Netbeans в значительной степени делает именно то, что вам нужно.
Вам нужен совет по объектной модели ? Как насчет:
// C#-ish code that probably doesn't compile
class Element {
public object GetAttribute(string attribute) {
if (this.Attributes.HasKey(attribute))
return this.Attributes[attribute];
else
return this.Parent.GetAttribute(attribute);
}
private IDictionary<string,object> Attributes;
private Element Parent;
private IList<Element> Children; // maybe not needed
// etc.
}
и перейти оттуда?