Xamarin.Android如何使用Dcsoup Nuget插件获取Google Play商店应用的版本号?

时间:2018-10-30 22:46:09

标签: dom xamarin.android jsoup

我正在尝试获取商店应用程序的最新版本号,以便在用户使用旧版本时通知用户更新。

到目前为止,这是我的代码,但显然它只是检索包含文本“版本号”的div。如何获得实际的版本号(在本例中为1.1),请参考所附的DOM树截图?

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;
        }

enter image description here

1 个答案:

答案 0 :(得分:1)

根据parser doc,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;

enter image description here