dasf-web
Version:
Web frontend components for the data analytics software framework (DASF)
96 lines (78 loc) • 2.91 kB
text/typescript
export class WFSConverter{
private doc: XMLDocument;
private version: string;
constructor(doc: XMLDocument){
this.doc = doc;
this.version = this.getWFSVersion();
}
public readTag(tagName: WFSTag):string{
var value: string = "";
if(this.version=="1.0.0"){
value = this.getValueFromV100(tagName);
}else{
var wfsTagName: string = this.getTagName(tagName);
value = this.doc.getElementsByTagName(wfsTagName)[0].innerHTML;
}
return value;
}
public readChildNodeTag(docNode: XMLDocument, tagName: WFSTag | string): string{
var wfsTagName: string = "";
if(typeof tagName === 'string'){
wfsTagName = tagName;
}else{
wfsTagName = this.getTagName(tagName);
}
var value: string = "";
if(docNode.getElementsByTagName(wfsTagName).length>0){
value = docNode.getElementsByTagName(wfsTagName)[0].innerHTML;
}
if(docNode.getElementsByTagName("wfs:"+wfsTagName)[0]){
value = docNode.getElementsByTagName("wfs:"+wfsTagName)[0].innerHTML;
}
return value;
}
public readList(tagName: WFSTag): HTMLCollection{
var wfsTagName: string = this.getTagName(tagName);
var featureTypeList: HTMLCollection = this.doc.getElementsByTagName(wfsTagName);
if(featureTypeList.length==0){
featureTypeList = this.doc.getElementsByTagName("wfs:"+wfsTagName);
}
return featureTypeList;
}
public getWFSVersion(): string{
var version: string|null = this.doc.children[0].getAttribute("version");
return (version == null)? "" : version;
}
public getTagName(tag: WFSTag): string{
switch(tag){
case WFSTag.ProviderName:
return "ows:ProviderName";
case WFSTag.Title:
return "ows:Title";
case WFSTag.FeatureType:
return "FeatureType";
case WFSTag.Name:
return "Name";
case WFSTag.FeatureTypeTitle:
return "Title";
case WFSTag.Abstract:
return "Abstract";
}
return "not found";
}
public getValueFromV100(tag: WFSTag): string{
var value: string = "";
switch(tag){
case WFSTag.Title:
/* Why doesn't it work?
var service:XPathResult = this.doc.evaluate("//Service/Title",this.doc,null, XPathResult.STRING_TYPE, null);
value = service.stringValue; */
value = this.doc.getElementsByTagName("Title")[0].innerHTML;
break;
}
return value;
}
}
export enum WFSTag{
ProviderName, Title, Name, FeatureType, FeatureTypeTitle, Abstract
}