MCPcopy Create free account
hub / github.com/cocos/cocos-engine / parseXMLString

Method parseXMLString

cocos/tiledmap/tmx-xml-parser.ts:541–797  ·  view source on GitHub ↗

* Initializes parsing of an XML string, either a tmx (Map) string or tsx (Tileset) string * @param {String} xmlString * @param {Number} tilesetFirstGid * @return {Element}

(xmlStr: string, tilesetFirstGid?: number)

Source from the content-addressed store, hash-verified

539 * @return {Element}
540 */
541 parseXMLString (xmlStr: string, tilesetFirstGid?: number): HTMLElement {
542 const parser = new SAXParser();
543 const mapXML: Document = parser.parse(xmlStr);
544 let i: number;
545
546 // PARSE <map>
547 const map = mapXML.documentElement;
548
549 const orientationStr = map.getAttribute('orientation');
550 const staggerAxisStr = map.getAttribute('staggeraxis');
551 const staggerIndexStr = map.getAttribute('staggerindex');
552 const hexSideLengthStr = map.getAttribute('hexsidelength');
553 const renderorderStr = map.getAttribute('renderorder');
554 const version = map.getAttribute('version') || '1.0.0';
555
556 if (map.nodeName === 'map') {
557 const versionArr = version.split('.');
558 const supportVersion = this._supportVersion;
559 for (i = 0; i < supportVersion.length; i++) {
560 const v = parseInt(versionArr[i]) || 0;
561 const sv = supportVersion[i];
562 if (sv < v) {
563 logID(7216, version);
564 break;
565 }
566 }
567
568 if (orientationStr === 'orthogonal') this.orientation = Orientation.ORTHO;
569 else if (orientationStr === 'isometric') this.orientation = Orientation.ISO;
570 else if (orientationStr === 'hexagonal') this.orientation = Orientation.HEX;
571 else if (orientationStr !== null) logID(7217, orientationStr);
572
573 if (renderorderStr === 'right-up') {
574 this.renderOrder = RenderOrder.RightUp;
575 } else if (renderorderStr === 'left-up') {
576 this.renderOrder = RenderOrder.LeftUp;
577 } else if (renderorderStr === 'left-down') {
578 this.renderOrder = RenderOrder.LeftDown;
579 } else {
580 this.renderOrder = RenderOrder.RightDown;
581 }
582
583 if (staggerAxisStr === 'x') {
584 this.setStaggerAxis(StaggerAxis.STAGGERAXIS_X);
585 } else if (staggerAxisStr === 'y') {
586 this.setStaggerAxis(StaggerAxis.STAGGERAXIS_Y);
587 }
588
589 if (staggerIndexStr === 'odd') {
590 this.setStaggerIndex(StaggerIndex.STAGGERINDEX_ODD);
591 } else if (staggerIndexStr === 'even') {
592 this.setStaggerIndex(StaggerIndex.STAGGERINDEX_EVEN);
593 }
594
595 if (hexSideLengthStr) {
596 this.setHexSideLength(parseFloat(hexSideLengthStr));
597 }
598

Callers 1

initWithXMLMethod · 0.95

Calls 15

parseMethod · 0.95
setStaggerAxisMethod · 0.95
setStaggerIndexMethod · 0.95
setHexSideLengthMethod · 0.95
setMapSizeMethod · 0.95
setTileSizeMethod · 0.95
setTilesetsMethod · 0.95
_shouldIgnoreNodeMethod · 0.95
_parseImageLayerMethod · 0.95
setImageLayersMethod · 0.95
_parseLayerMethod · 0.95
setLayersMethod · 0.95

Tested by

no test coverage detected