dom - Xamarin.Android 如何使用 Dcsoup Nuget 插件获取 Google Play 商店应用程序版本号?
问题描述
我正在尝试获取我的商店应用程序的最新版本号,以便在用户使用旧版本时通知用户更新。
到目前为止,这是我的代码,但它显然只是检索包含文本“版本号”的 div。如何参考所附 DOM 树的屏幕截图获得实际版本号(在本例中为 1.1)?
public static string GetAndroidStoreAppVersion()
{
string androidStoreAppVersion = null;
try
{
using (var client = new HttpClient())
{
var doc = client.GetAsync("https://play.google.com/store/apps/details?id=" + AppInfo.PackageName + "&hl=en_CA").Result.Parse();
var versionElement = doc.Select("div:containsOwn(Current Version)");
androidStoreAppVersion = versionElement.Text;
}
}
catch (Exception ex)
{
// do something
Console.WriteLine(ex.Message);
}
return androidStoreAppVersion;
}
解决方案
根据解析器文档, containsOwm 选择器选择直接包含指定文本的元素。结果,您的代码
var versionElement = doc.Select("div:containsOwn(Current Version)");
肯定会返回“当前版本”。您想要获得的真正元素是“当前版本”元素的兄弟元素的子元素。因此,您必须使用选择器获取该元素。所以可以通过这种方式获取版本号:
var versionElement = doc.Select("div:containsOwn(Current Version)");
Element headElement = versionElement[0];
Elements siblingsOfHead = headElement.SiblingElements;
Element contentElement = siblingsOfHead.First;
Elements childrenOfContentElement = contentElement.Children;
Element childOfContentElement = childrenOfContentElement.First;
Elements childrenOfChildren = childOfContentElement.Children;
Element childOfChild = childrenOfChildren.First;
androidStoreAppVersion = childOfChild.Text;
推荐阅读
- sql - 我需要弄清楚:使 sql AND 运算符工作
- vb.net - 进场后记录超时 - RFID Student Gate Pass ID System
- three.js - 碰撞检测three.js/相机碰撞
- javascript - Href更改时的Jquery类更改?
- c# - Xamarin.Android - 启动时启动服务已完成
- docker - 合并 docker 容器/提交/图像
- python - Python海龟模块.ontimer循环问题
- python - 如何将多个项目写入 CSV 行?
- c++ - 如何让 mingw64 使用代码块
- mod-rewrite - Apache 无法检测到 URL 并将其重写为小写