dinsdag 28 december 2021

Load XML in Angular Typescript

It is possible to load XML in Angular:

let queryParams = new HttpParams();
queryParams = queryParams.append("version", "2.0.0");
queryParams = queryParams.append("service", "wfs");
queryParams = queryParams.append("request", "GetCapabilities");

this.http.get("https://geoserver.domain.com/test", { params: queryParams, responseType: 'text' }).pipe(
    map(res => {
        try {
            let parser = new DOMParser();
            let doc = parser.parseFromString(res, "text/xml");
            return doc;
        } catch (error) { console.error("error", error); }
    })
).subscribe({
    next: data => {
        if (data) {
            let nsResolver = data.createNSResolver(data.ownerDocument === null ? data.documentElement : (<any>data.ownerDocument).documentElement);
            let featureListNode = data.evaluate('/wfs:WFS_Capabilities/wfs:FeatureTypeList', data, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
            // /wfs:FeatureType/wfs:Name/text()
            if (featureListNode.singleNodeValue.hasChildNodes()) {
                const children = featureListNode.singleNodeValue.childNodes;
            }
        }
    },
    error: error => { console.error("error", error); }
});

Toevoegen: import { map } from 'rxjs/operators';