У меня есть WebView для посещения веб-страницы. И я использую код ниже, чтобы получить исходный код html.
private void Webview_Loaded(object sender, RoutedEventArgs e)
{
string htmlStr = LenovoID.GetProfileData();
webview.Navigate(new Uri(htmlStr));
}
private async void Webview_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
string resulthtml = null;
try
{
resulthtml = await webview.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
Debug.WriteLine(".................................html = {0}", resulthtml);
}
catch (Exception ex)
{
}
}
Результат html, который является исходным кодом веб-страницы ниже:
.................................html = <userkeyinfo><div xmlns="http://www.w3.org/1999/xhtml" style="color: blue; font-weight: normal; margin-left: -4em;"><?xml version="1.0" encoding="ISO-8859-1"?></div><style xmlns="http://www.w3.org/1999/xhtml">@namespace html url(http://www.w3.org/1999/xhtml); :root { font:small Verdana; font-weight: bold; padding: 2em; padding-left:4em; } * { display: block; padding-left: 2em; } html|style { display: none; } html|span, html|a { display: inline; padding: 0; font-weight: normal; text-decoration: none; } html|a[tabindex='0'] { cursor: pointer; } html|span.block { display: block; } *[html|hidden], *[html|hidden] *, span.block[html|hidden] { display:none!important; } .expand { display: block; } .expand:before { content: '+'; color: red; position: absolute; left: -1em; } .collapse { display: block; } .collapse:before { content: '-'; color: red; position: absolute; left:-1em; } </style><a xmlns="http://www.w3.org/1999/xhtml" tabindex="0" class="collapse" role="treeitem" aria-expanded="true" aria-posinset="1" aria-setsize="1" aria-level="1" style="color: blue; margin-left: -2em; position: relative;"><<span style="color: rgb(153, 0, 0);">userkeyinfo</span>></a><oneuser><a xmlns="http://www.w3.org/1999/xhtml" tabindex="0" class="collapse" role="treeitem" aria-expanded="true" aria-posinset="1" aria-setsize="3" aria-level="2" style="color: blue; margin-left: -2em; position: relative;"><<span style="color: rgb(153, 0, 0);">oneuser</span>></a><uid><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="1" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">uid</span>></a>10041167847<span xmlns="http://www.w3.org/1999/xhtml" style="color: blue;"></<span style="color: rgb(153, 0, 0);">uid</span>></span></uid><lastname><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="2" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">lastname</span>></a>Xue<span xmlns="http://www.w3.org/1999/xhtml" style="color: blue;"></<span style="color: rgb(153, 0, 0);">lastname</span>></span></lastname><firstname><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="3" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">firstname</span>></a>Tom<span xmlns="http://www.w3.org/1999/xhtml" style="color: blue;"></<span style="color: rgb(153, 0, 0);">firstname</span>></span></firstname><middlename><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="4" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">middlename</span>/></a></middlename><gender><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="5" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">gender</span>/></a></gender><agegroup><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="6" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">agegroup</span>/></a></agegroup><addresses><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="7" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">addresses</span>/></a></addresses><tels><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="8" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">tels</span>/></a></tels><emails><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="9" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">emails</span>/></a></emails><birthyear><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="10" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">birthyear</span>/></a></birthyear><birthmonth><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="11" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">birthmonth</span>/></a></birthmonth><birthday><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="12" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">birthday</span>/></a></birthday><bloodtype><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="13" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">bloodtype</span>/></a></bloodtype><career><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="14" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">career</span>/></a></career><version><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="15" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">version</span>></a>2<span xmlns="http://www.w3.org/1999/xhtml" style="color: blue;"></<span style="color: rgb(153, 0, 0);">version</span>></span></version><registerlang><a xmlns="http://www.w3.org/1999/xhtml" tabindex="-1" role="treeitem" aria-expanded="true" aria-posinset="16" aria-setsize="16" aria-level="3" style="color: blue; margin-left: -2em;"><<span style="color: rgb(153, 0, 0);">registerlang</span>></a>zh_CN<span xmlns="http://www.w3.org/1999/xhtml" style="color: blue;"></<span style="color: rgb(153, 0, 0);">registerlang</span>></span></registerlang><span xmlns="http://www.w3.org/1999/xhtml" class="block" style="color: blue; margin-left: -2em;"></<span style="color: rgb(153, 0, 0);">oneuser</span>></span></oneuser><span xmlns="http://www.w3.org/1999/xhtml" class="block" style="color: blue; margin-left: -2em;"></<span style="color: rgb(153, 0, 0);">userkeyinfo</span>></span></userkeyinfo>
И если я отформатировал его (используйте этот онлайн-инструмент: https://htmlformatter.com/) и сохраните его в 1. html. Я использую веб-обозреватель, чтобы посетить его, затем он выглядит следующим образом.
![enter image description here](https://i.stack.imgur.com/fMvSI.png)
Моя цель - извлечь данные из показанного компонента xml, например, получить фамилию Сюэ, имя Том, et c.
Я думаю, что нужно три шага :
- Форматировать строку html;
- Получить веб-контент (xml строки) из отформатированного html;
- Извлечь xml компонент из xml целых строк, например, фамилия Xue
Как это сделать?