在大多数情况下,我处理具有以下结构的简单xml CLOB:
<SuggestResponse>
<suggestions>
<value>ПАО "Cбербанк"</value>
....
....
</suggestions>
</SuggestResponse>
我可以轻松提取值,然后将其与我拥有的任何变量进行比较:
IF variable = xmltype(xmlclob.extract('SuggestResponse/suggestions/value/text()').getstringval() THEN
.....
END IF;
但是有时候我会得到具有不同结构的XML CLOB:
<SuggestResponse>
<suggestions>
<value>ПАО "Cбербанк"</value>
....
....
</suggestions>
<suggestions>
<value>ПАО Банк «ФК Открытие»</value>
....
....
</suggestions>
</SuggestResponse>
有2个或更多标签,我不知道如何使用FOR LOOP来检查每个标签。如何指向当前正在使用<suggestions>
的FOR LOOP(第一,第二...)。
谢谢!
答案 0 :(得分:1)
如果您是我,我将避免使用不建议使用的提取(和extractvalue),而应使用XMLTABLE来查询xml文档的内容。这将比遍历同一文档以分别提取内容要快,因为这意味着xml文档仅需读取一次。
您可以这样做:
private bool isconnect;
public bool IsConnect
{
get { return isconnect; }
set { SetProperty(ref isconnect, value); }
}
Constructor()
{
//Assign IsConnected when entering the Constructor
IsConnect = CrossConnectivity.Current.IsConnected; //Don't know if you are using this plugin
MessagingCenter.Subscribe<App, bool>(this, "Internet", (sender, arg) =>
{
if(IsConnect != arg)
{
IsConnect = arg;
LoadSessions();
}
});
LoadSessions();
}