GuLiMmo
2024-03-18 3e13dd0242140c7189b65e4171efaa9190d1763d
src/utils/cesium/kmz.ts
@@ -141,7 +141,13 @@
  const parser = new DOMParser()
  const xmlDoc = parser.parseFromString(xmlStr, 'text/xml')
  const xmlObj = deepParse(xmlDoc.documentElement)
  return xmlObj
  if (Reflect.has(xmlObj, 'Document')) {
    return xmlObj
  } else {
    return {
      Document: xmlObj
    }
  }
}
// json转xml
@@ -151,14 +157,14 @@
 * @param {string} rootName xml根节点名称
 * @return {*} string
 */
export const JSONToXML = (obj: any, rootName?: string | undefined) => {
export const JSONToXML = (obj: any, rootName?: string | undefined, isEnd: boolean = false) => {
  let xml = ''
  const buildXml = (obj: string | any[], rootName?: string | undefined) => {
    let xml = ''
    if (Array.isArray(obj)) {
      obj.forEach((item) => {
        xml += `<${rootName}>${buildXml(item)}</${rootName}>`
        xml += `<${rootName}>${buildXml(item)}</${rootName}>\n`
      })
    } else if (typeof obj === 'object') {
      Object.keys(obj).forEach((key) => {
@@ -168,8 +174,8 @@
          if (key === 'Placemark') {
            xml += `${buildXml(obj[key], key)}`
          } else {
            const str = !noWmpl.includes(key) ? 'wpml:' : ''
            xml += `<${str}${key}>${buildXml(obj[key], key)}</${str}${key}>`
            const str = !noWmpl.includes(key) && isEnd ? 'wpml:' : ''
            xml += `<${str}${key}>${buildXml(obj[key], key)}</${str}${key}>\n`
          }
        }
      })
@@ -179,12 +185,12 @@
    return xml
  }
  const header = isEnd ? '<?xml version="1.0" encoding="UTF-8"?>' : ''
  xml += `
  <?xml version="1.0" encoding="UTF-8"?>
  ${header}
  <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:wpml="http://www.dji.com/wpmz/1.0.5">
    ${buildXml(obj, rootName)}
  </kml>
  `
  return xml
}