• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ rapidxml::xml_node类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中rapidxml::xml_node的典型用法代码示例。如果您正苦于以下问题:C++ xml_node类的具体用法?C++ xml_node怎么用?C++ xml_node使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了xml_node类的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: xml_ajouterAttributs

void TacheUnitaire::xml_ajouterAttributs(rapidxml::xml_document<> & doc, rapidxml::xml_node<> & node_tache)
{
   using namespace rapidxml;
   xml_attribute<> * attribute = doc.allocate_attribute("type", "u");
   node_tache.append_attribute(attribute);
   if(getPreempte() == true) {
      attribute = doc.allocate_attribute("pre", "true");
      node_tache.append_attribute(attribute);
   }
   char * node_name = doc.allocate_string( duree.toChar() );
   attribute = doc.allocate_attribute( "duree", node_name );
   node_tache.append_attribute(attribute);
}
开发者ID:mlonguet,项目名称:Calendar_Project,代码行数:13,代码来源:tacheUnitaire.cpp


示例2: loadLayers

	void TiledMapLoader::loadLayers(Map &map, rapidxml::xml_node<> &rootNode) {
		rapidxml::xml_node<> *layerNode = nullptr;
		rapidxml::xml_node<> *layerDataNode = nullptr;
		int layerId = 0;
		layerNode = rootNode.first_node("layer");
		if (!layerNode) {
			throw std::logic_error("Invalid tiled map: no layer tag");
		}
		while (layerNode) {
			Layer::Ptr layer(new Layer);
			layerDataNode = layerNode->first_node("data");
			if (!layerDataNode) {
				throw std::logic_error("Invalid tiled map : no layer data tag");
			}
			XMLElement layerElement(*layerNode);
			layer->setId(layerId);
			layer->setName(layerElement.getString("name"));
			layer->setWidth(layerElement.getInt("width"));
			layer->setHeight(layerElement.getInt("height"));
			layer->setVisible(layerElement.getInt("visible", 1));
			layer->setOpacity(layerElement.getFloat("opacity", 1));
			layer->parseProperties(*layerNode);
			loadLayerTiles(map, *layer.get(), *layerDataNode);
			map.addLayer(std::move(layer));
			layerNode = layerNode->next_sibling("layer");
			++layerId;
		}
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:28,代码来源:TiledMapLoader.cpp


示例3: decode_xml_node

void experiment_datasets::decode_xml_node(rapidxml::xml_node<> & node)
{
	using namespace rapidxml;


	assert (string("experiment_datasets") == node.name());

	train_test_pairs.resize(0);
	xml_node<> * train_test_pairs_node = node.first_node("train_test_pairs");
	for (xml_node<> * train_test_pair_node = train_test_pairs_node->first_node("train_test_pair");
		train_test_pair_node != 0 ; train_test_pair_node = train_test_pair_node->next_sibling("train_test_pair"))
	{
		shared_ptr<train_test_pair> p_train_test_pair = deserialize<train_test_pair>(train_test_pair_node);
		train_test_pairs.push_back(*p_train_test_pair);
	}

}
开发者ID:rudaoshi,项目名称:artifact,代码行数:17,代码来源:experiment_datasets.cpp


示例4: parseItem

void parseItem( const rapidxml::xml_node<> &node, XmlTree *parent, XmlTree *result, const XmlTree::ParseOptions &options )
{
	*result = XmlTree( node.name(), node.value(), parent );
	for( const rapidxml::xml_node<> *item = node.first_node(); item; item = item->next_sibling() ) {
		XmlTree::NodeType type;
		switch( item->type() ) {
			case rapidxml::node_element:
				type = XmlTree::NODE_ELEMENT;
			break;
			case rapidxml::node_cdata: {
				if( options.getCollapseCData() ) {
					result->setValue( result->getValue() + item->value() );
					continue;
				}
				else {
					type = XmlTree::NODE_CDATA;
				}
			}
			break;						
			case rapidxml::node_comment:
				type = XmlTree::NODE_COMMENT;
			break;
			case rapidxml::node_doctype: {
				result->setDocType( item->value() );
				continue;
			}
			case rapidxml::node_data: {
				if( ! options.getIgnoreDataChildren() )
					type = XmlTree::NODE_DATA;
				else
					continue;
			}
			break;
			default:
				continue;
		}
		
		result->getChildren().push_back( unique_ptr<XmlTree>( new XmlTree ) );
		parseItem( *item, result, result->getChildren().back().get(), options );
		result->getChildren().back()->setNodeType( type );
	}

	for( rapidxml::xml_attribute<> *attr = node.first_attribute(); attr; attr = attr->next_attribute() )
		result->getAttributes().push_back( XmlTree::Attr( result, attr->name(), attr->value() ) );
}
开发者ID:Ahbee,项目名称:Cinder,代码行数:45,代码来源:Xml.cpp


示例5: Open

_NAMESPACE_REALSPACE2_BEGIN

bool RDummyList::Open(rapidxml::xml_node<>& parent)
{
	for (auto* node = parent.first_node(); node; node = node->next_sibling())
	{
		auto* szTagName = node->name();
		if (!szTagName)
			continue;

		if (szTagName[0] == '#')
			continue;

		if (_stricmp(szTagName, RTOK_DUMMY) != 0)
			continue;

		auto name_attr = node->first_attribute(RTOK_NAME);
		if (!name_attr)
			continue;

		auto* name = name_attr->value();
		if (!name)
			continue;

		emplace_back();
		auto& Dummy = back();
		Dummy.Name = name;

		for (auto* prop_node = node->first_node(); prop_node; prop_node = prop_node->next_sibling())
		{
			auto* szTagName = prop_node->name();
			if (!szTagName)
				continue;
			const char* szContents = prop_node->value();
			if (!szContents)
				szContents = "";

			auto ReadVector = [&]() {
				v3 vec;
				if (sscanf(szContents, "%f %f %f", &vec.x, &vec.y, &vec.z) != 3)
					vec = { 0, 0, 0 };
				return vec;
			};

			if (_stricmp(szTagName, RTOK_POSITION) == 0)
				Dummy.Position = ReadVector();
			else if (_stricmp(szTagName, RTOK_DIRECTION) == 0)
				Dummy.Direction = ReadVector();
		}
	}

	return true;
}
开发者ID:Asunaya,项目名称:RefinedGunz,代码行数:53,代码来源:RDummyList.cpp


示例6: tileset

	void TiledMapLoader::addTileset(Map &map, int tilesetId, rapidxml::xml_node<> &tilesetNode, unsigned firstGid) {
		Tileset::Ptr tileset(new Tileset);
		rapidxml::xml_node<> *tilesetImageNode = nullptr;
		rapidxml::xml_node<> *tilesetOffsetNode = nullptr;
		tilesetImageNode = tilesetNode.first_node("image");
		if (!tilesetImageNode) {
			throw std::logic_error("Invalid tiled map: no tileset image tag");
		}
		XMLElement tilesetElement(tilesetNode);
		XMLElement tilesetImageElement(*tilesetImageNode);
		tilesetOffsetNode = tilesetNode.first_node("tileoffset");
		if (tilesetOffsetNode) {
			XMLElement element(*tilesetOffsetNode);
			tileset->setOffsetX(element.getInt("x"));
			tileset->setOffsetY(element.getInt("y"));
		} else {
			tileset->setOffsetX(0);
			tileset->setOffsetY(0);
		}
		tileset->setId(tilesetId);
		if (firstGid) {
			tileset->setFirstGid(firstGid);
		} else {
			tileset->setFirstGid(tilesetElement.getInt("firstgid"));
		}
		tileset->setName(tilesetElement.getString("name"));
		tileset->setTileWidth(tilesetElement.getInt("tilewidth"));
		tileset->setTileHeight(tilesetElement.getInt("tileheight"));
		tileset->setSpacing(tilesetElement.getInt("spacing"));
		tileset->setMargin(tilesetElement.getInt("margin"));
		tileset->setImageSource(tilesetImageElement.getString("source"));
		tileset->setWidth(tilesetImageElement.getInt("width"));
		tileset->setHeight(tilesetImageElement.getInt("height"));
		tileset->parseProperties(tilesetNode);
		parseTilesetsTileProperties(map, *(tileset.get()), tilesetNode);
		map.addTileset(std::move(tileset));
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:37,代码来源:TiledMapLoader.cpp


示例7: addCuboid

void Level::addCuboid(const rapidxml::xml_node<> &cuboidNode)
{    
    osg::Vec3 from = getVectorFromXMLNode("position", cuboidNode);
    osg::Vec3 size = getVectorFromXMLNode("size", cuboidNode);
 
    Cuboid *cuboid = NULL;
    
    if(cuboidNode.first_attribute("type") != 0)
    {
        std::string type = cuboidNode.first_attribute("type")->value();

        if(type == "accelerate")
            cuboid = new AccelerationCuboid(from, size);
        else if(type == "decelerate")
            cuboid = new DecelerationCuboid(from, size);
    }

    if(cuboid == NULL)
    {
        cuboid = new Cuboid(from, size);
    }
	
    _level->addChild(cuboid->getNode());
    _collisionObjects.push_back(cuboid->getRigidBody());
    
    // save minimal x values for buckets of close y values
    // needed for detection whether player is falling to dead    
    int yBucketIndex = (int)((from.y() + size.y()) / 20.0f);
	
	while(_minZValues.size() <= yBucketIndex)
        _minZValues.push_back(from.z());
    
    // if current cuboid is lower then z -> adjust bucket value
    if(from.z() < _minZValues[yBucketIndex])
        _minZValues[yBucketIndex] = from.z();
}
开发者ID:rstrobl,项目名称:starjumper,代码行数:36,代码来源:Level.cpp


示例8: loadObjectGroups

	void TiledMapLoader::loadObjectGroups(Map &map, rapidxml::xml_node<> &rootNode) {
		rapidxml::xml_node<> *objectGroupNode = nullptr;
		objectGroupNode = rootNode.first_node("objectgroup");
		while (objectGroupNode) {
			ObjectGroup::Ptr objectGroup(new ObjectGroup);
			XMLElement objectGroupElement(*objectGroupNode);
			objectGroup->setName(objectGroupElement.getString("name"));
			objectGroup->setDrawOrder(objectGroupElement.getString("draworder"));
			objectGroup->setWidth(objectGroupElement.getInt("width"));
			objectGroup->setHeight(objectGroupElement.getInt("height"));
			objectGroup->setVisible(objectGroupElement.getInt("visible", 1));
			objectGroup->setOpacity(objectGroupElement.getFloat("opacity", 1));
			objectGroup->parseProperties(*objectGroupNode);
			loadObjectGroupObjects(map, *objectGroup.get(), *objectGroupNode);
			map.addObjectGroup(std::move(objectGroup));
			objectGroupNode = objectGroupNode->next_sibling("objectgroup");
		}
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:18,代码来源:TiledMapLoader.cpp


示例9: loadLayerTiles

	void TiledMapLoader::loadLayerTiles(Map &map, Layer &layer, rapidxml::xml_node<> &layerDataNode) {
		rapidxml::xml_node<> *tileNode = nullptr;
		XMLElement layerDataElement(layerDataNode);
		unsigned mapIterator = 0;
		unsigned gid = 0;
		if (!strncmp(layerDataElement.getString("encoding"), "base64", 6) && !strncmp(layerDataElement.getString("compression"), "zlib", 4)) {
			auto base64Tiles = Base64::decode(trim(layerDataElement.getValue()));
			unsigned numberOfGids = layer.getWidth()  *layer.getHeight();
			unsigned tileIndex = 0;
			mz_ulong uncompressSize = numberOfGids << 2;
			auto gids = new unsigned char[uncompressSize];
			if (!gids) {
				throw std::logic_error("Uncompression failed: can't allocate memory");
			}
			if (mz_uncompress(gids, &uncompressSize, (unsigned char *) base64Tiles.c_str(), base64Tiles.length()) != MZ_OK) {
				throw std::logic_error("Zlib error: uncompression failed");
			}
			while (mapIterator < numberOfGids) {
				gid = gids[tileIndex] | gids[tileIndex + 1] << 8 | gids[tileIndex + 2] << 16 | gids[tileIndex + 3] << 24;
				if (gid)
					createTileFromGid(map, layer, gid, mapIterator);
				tileIndex += 4;
				++mapIterator;
			}
			delete[] gids;
		}
		else {
			tileNode = layerDataNode.first_node("tile");
			if (!tileNode) {
				throw std::logic_error("Invalid tiled map: no tiles (only plain XML or ZLIB supported)");
			}
			while (tileNode) {
				XMLElement tileElement(*tileNode);
				gid = tileElement.getUnsignedInt("gid");
				if (gid) {
					createTileFromGid(map, layer, gid, mapIterator);
				}
				tileNode = tileNode->next_sibling("tile");
				++mapIterator;
			}
		}
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:42,代码来源:TiledMapLoader.cpp


示例10: loadTilesets

	void TiledMapLoader::loadTilesets(Map &map, rapidxml::xml_node<> &rootNode) {
		auto tilesetNode = rootNode.first_node("tileset");
		char *tilesetSource = nullptr;
		auto tilesetId = 0;
		if (!tilesetNode) {
			throw std::logic_error("Invalid tiled map: no tileset tag");
		}
		while (tilesetNode) {
			XMLElement tilesetElement(*tilesetNode);
			tilesetSource = tilesetElement.getString("source", nullptr);

			if (tilesetSource) {
				loadExternalTileset(map, tilesetId, tilesetSource, tilesetElement.getInt("firstgid"));
			} else {
				addTileset(map, tilesetId, *tilesetNode);
			}
			tilesetNode = tilesetNode->next_sibling("tileset");
			++tilesetId;
		}
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:20,代码来源:TiledMapLoader.cpp


示例11: addTunnel

void Level::addTunnel(const rapidxml::xml_node<> &tunnelNode)
{
	osg::Node *tunnelModel = osgDB::readNodeFile(TUNNEL_MODEL_FILE);
	osg::PositionAttitudeTransform *tunnelTransform = new osg::PositionAttitudeTransform();
    osg::Vec3 position = getVectorFromXMLNode("position", tunnelNode);

	tunnelTransform->addChild(tunnelModel);
	tunnelTransform->setPosition(position);
	tunnelTransform->setScale(osg::Vec3f(1.0f, atof(tunnelNode.first_attribute("length")->value()), 1.0f));
	
	tunnelTransform->setNodeMask(RECEIVE_SHADOW_MASK);
	_level->addChild(tunnelTransform);
	
    /*
	btConvexTriangleMeshShape* mesh = osgbBullet::btConvexTriMeshCollisionShapeFromOSG(tunnelPat);

	btTransform shapeTransform;
	shapeTransform.setIdentity();
	cs->addChildShape(shapeTransform, mesh);
	*/
}
开发者ID:rstrobl,项目名称:starjumper,代码行数:21,代码来源:Level.cpp


示例12: loadObjectGroupObjects

	void TiledMapLoader::loadObjectGroupObjects(Map &map, ObjectGroup &objectGroup, rapidxml::xml_node<> &objectGroupNode) {
		rapidxml::xml_node<> *objectNode = nullptr;
		rapidxml::xml_node<> *objectNature = nullptr;
		objectNode = objectGroupNode.first_node("object");
		while (objectNode) {
			Object::Ptr object(new Object);
			XMLElement objectGroupElement(*objectNode);
			object->setGid(objectGroupElement.getInt("gid", -1));
			object->setId(objectGroupElement.getInt("id", -1));
			object->setName(objectGroupElement.getString("name"));
			object->setType(objectGroupElement.getString("type"));
			object->setX(objectGroupElement.getFloat("x"));
			object->setY(objectGroupElement.getFloat("y"));
			object->setWidth(objectGroupElement.getFloat("width"));
			object->setHeight(objectGroupElement.getFloat("height"));
			object->setRotation(objectGroupElement.getFloat("rotation"));
			object->setVisible(objectGroupElement.getInt("visible", 1));
			objectNature = objectNode->first_node("ellipse");
			if (objectNature) {
				object->setPolygonType("ellipse");
			}
			objectNature = objectNode->first_node("polygon");
			if (objectNature) {
				XMLElement objectNatureElement(*objectNature);

				object->setPolygonType("polygon");
				object->setVertices(objectNatureElement.getString("points"));
			}
			objectNature = objectNode->first_node("polyline");
			if (objectNature) {
				XMLElement objectNatureElement(*objectNature);

				object->setPolygonType("polyline");
				object->setVertices(objectNatureElement.getString("points"));
			}
			object->parseProperties(*objectNode);
			objectGroup.addObject(std::move(object));
			objectNode = objectNode->next_sibling("object");
		}
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:40,代码来源:TiledMapLoader.cpp


示例13: runtime_error

osg::Vec3 Level::getVectorFromXMLNode(const std::string &name, const rapidxml::xml_node<> &node) const
{
    rapidxml::xml_node<> *vectorNode = node.first_node(name.c_str());
        
    if(!vectorNode)
    {
        throw std::runtime_error("Error: Level element missing vector node!");
    }
        
    float x, y, z;
    
    try
    {
        x = atof(vectorNode->first_attribute("x")->value());
        y = atof(vectorNode->first_attribute("y")->value());
        z = atof(vectorNode->first_attribute("z")->value());
    }
    catch(...)
    {
        throw std::runtime_error("Error: " + name + " node missing either x, y or z attribute!");
    }
    
    return osg::Vec3(x, y, z);   
}
开发者ID:starjumper,项目名称:Starjumper,代码行数:24,代码来源:Level.cpp


示例14: parseTilesetsTileProperties

	void TiledMapLoader::parseTilesetsTileProperties(Map &map, Tileset &tileset, rapidxml::xml_node<> &tilesetNode) {
		rapidxml::xml_node<> *tilesetTileNode = nullptr;
		rapidxml::xml_node<> *tilesetTileNodeProperties = nullptr;
		rapidxml::xml_node<> *tilesetTileNodeProperty = nullptr;

		tilesetTileNode = tilesetNode.first_node("tile");
		while (tilesetTileNode) {
			tilesetTileNodeProperties = tilesetTileNode->first_node("properties");
			if (tilesetTileNodeProperties) {
				tilesetTileNodeProperty = tilesetTileNodeProperties->first_node("property");
				while (tilesetTileNodeProperty) {
					XMLElement tileNode(*tilesetTileNode);
					XMLElement tileNodeProperty(*tilesetTileNodeProperty);
					char *name = tileNodeProperty.getString("name");
					char *value = tileNodeProperty.getString("value");
					if (name && value) {
						tileset.addTileProperties(tileNode.getInt("id"), name, value);
					}
					tilesetTileNodeProperty = tilesetTileNodeProperty->next_sibling("property");
				}
			}
			tilesetTileNode = tilesetTileNode->next_sibling("tile");
		}
	}
开发者ID:clickteam-plugin,项目名称:TiledMapLoader,代码行数:24,代码来源:TiledMapLoader.cpp


示例15: atoi

bool					Frame::parseXml(const rapidxml::xml_node<char> &node,
							std::string const &rootPath)
{
  //read name
  rapidxml::xml_node<char>		*nameNode = node.first_node("name");
  if (!nameNode)
    {
      std::cerr << "Error: Invalid Spriter file: Frame without name!" << std::endl;
      return false;
    }

  this->name_ = nameNode->value();

  //read and create sprites
  for (rapidxml::xml_node<char> *curNode = node.first_node("sprite");
       curNode;
       curNode = curNode->next_sibling("sprite"))
    {
      Sprite				*sprite;

      sprite = new Sprite;
      if (!sprite)
	return false;

      //get <image>
      rapidxml::xml_node<char> *node = curNode->first_node("image");
      if (!node)
	{
	  std::cerr << "Error: Invalid Spriter file: Frame \"" << this->name_ << "\" lacks <image> node!" << std::endl;
	  return false;
	}
      if (!sprite->setBitmap(node->value(), rootPath))
	{
	  return false;
	}

      //get <color> [0x000000 ; 0xffffff]
      node = curNode->first_node("color");
      if(!node)
      	{
      	  std::cerr << "Error: Invalid Spriter file: Frame \"" << this->name_ << "\" lacks <color> node!" << std::endl;
      	  return false;
      	}

      int intColor = atoi(node->value());

      //get <opacity> [0.f ; 100.f]
      node = curNode->first_node("opacity");
      if(!node)
      	{
      	  std::cerr << "Error: Invalid Spriter file: Frame \"" << this->name_ << "\" lacks <opacity> node!" << std::endl;
      	  return false;
      	}
      float opacity = atof(node->value());

      int colorR = (intColor & 0xff0000) >> 16;
      int colorG = (intColor & 0x00ff00) >> 8;
      int colorB = (intColor & 0x0000ff) >> 0;
      int colorA = opacity / 100.f * 255.f;

      sprite->setColor(al_map_rgba(colorR, colorG, colorB, colorA));

      //get <angle> (in degrees, around upper left corner)
      node = curNode->first_node("angle");
      if(!node)
      	{
      	  std::cerr << "Error: Invalid Spriter file: Frame \"" << this->name_ << "\" lacks <angle> node!" << std::endl;
      	  return false;
      	}

      sprite->setRotation(atof(node->value()));

      //get <width> (in pixels)
      node = curNode->first_node("width");
      if(!node)
      	{
      	  std::cerr << "Error: Invalid Spriter file: Frame \"" << this->name_ << "\" lacks <width> node!" << std::endl;
      	  return false;
      	}

      sprite->setWidth(atoi(node->value()));

      //get <height> (in pixels)
      node = curNode->first_node("height");
      if(!node)
      	{
      	  std::cerr << "Error: Invalid Spriter file: Frame \"" << this->name_ << "\" lacks <height> node!" << std::endl;
      	  return false;
      	}
      sprite->setHeight(atof(node->value()));

      // //get <xflip>
      // node = curNode->first_node("xflip");
      // if(!node)
      // 	{
      // 	  sf::err() << "Error: Invalid Spriter file: Frame \"" << mName << "\" lacks <xflip> node!" << std::endl;
      // 	  return false;
      // 	}
      // //            if(atoi(node->value())) width *= -1;

//.........这里部分代码省略.........
开发者ID:cesarl,项目名称:AllegroSpriter,代码行数:101,代码来源:Frame.cpp


示例16: nextSibling

//===========================================
// XmlNode::nextSibling
//===========================================
inline XmlNode XmlNode::nextSibling() const {
   if (isNull()) throw XmlException("Node is NULL", __FILE__, __LINE__);
   return XmlNode(m_doc, m_node->next_sibling(), m_file);
}
开发者ID:yuang1516,项目名称:dodge,代码行数:7,代码来源:XmlNode.hpp


示例17: firstChild

//===========================================
// XmlNode::firstChild
//===========================================
inline XmlNode XmlNode::firstChild() const {
   if (isNull()) throw XmlException("Node is NULL", __FILE__, __LINE__);
   return XmlNode(m_doc, m_node->first_node(), m_file);
}
开发者ID:yuang1516,项目名称:dodge,代码行数:7,代码来源:XmlNode.hpp


示例18: XmlException

//===========================================
// XmlNode::getString
//===========================================
inline std::string XmlNode::getString() const {
   if (isNull())
      throw XmlException("Node is NULL", __FILE__, __LINE__);

   return std::string(m_node->value(), m_node->value_size());
}
开发者ID:yuang1516,项目名称:dodge,代码行数:9,代码来源:XmlNode.hpp



注:本文中的rapidxml::xml_node类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ ratl::vector_vs类代码示例发布时间:2022-05-31
下一篇:
C++ rapidjson::Value类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap