Browse Source

added parse recurse in js p5WFS GetFeature

Piotr Labudda 8 years ago
parent
commit
8b8ad75751
1 changed files with 17 additions and 7 deletions
  1. 17 7
      SE/static/p5WFS/GetFeature.js

+ 17 - 7
SE/static/p5WFS/GetFeature.js

@@ -1,19 +1,28 @@
 // @require WFS_URL
 if (!WFS_URL) throw "Missing WFS_URL"
 
+function p5WFS_ParseFeatureFieldRecurse(tagNode) { // @returns object from xml element
+	var item = {}
+	var i = 0
+	for (i = 0; i < tagNode.children.length; i++) {
+		var fieldNode = tagNode.children[i]
+		if (!fieldNode.children.length) {
+			if (fieldNode.textContent) item[ fieldNode.localName ] = fieldNode.textContent
+		}
+		else {
+			if (!(fieldNode.tagName in item)) item[ fieldNode.tagName ] = []
+			item[ fieldNode.tagName ].push( p5WFS_ParseFeatureFieldRecurse(fieldNode) )
+		}
+	}
+	return item
+}
 function p5WFS_ParseFeatureMember(featureMember) { // @returns object from xml element <gml:featureMemeber>
 	if (!featureMember) return null
 	if (!featureMember.children.length) return null
 	var featureNode = featureMember.children[0]
 	if (!featureNode) return null
 	if (!featureNode.children.length) return null
-	var item = {}
-	var i = 0
-	for (i = 0; i < featureNode.children.length; i++) {
-		var field = featureNode.children[i]
-		item[ field.localName ] = field.textContent
-	}
-	return item
+	return p5WFS_ParseFeatureFieldRecurse(featureNode)
 }
 
 /**
@@ -137,4 +146,5 @@ function p5WFS_GetFeature(typeName, query) { // @returns Promise
 }
 
 global.p5WFS_ParseFeatureMember = p5WFS_ParseFeatureMember
+global.p5WFS_ParseFeatureFieldRecurse = p5WFS_ParseFeatureFieldRecurse
 global.p5WFS_GetFeature = p5WFS_GetFeature