当前位置: 首页>>代码示例>>C++>>正文


C++ Node::nodeName方法代码示例

本文整理汇总了C++中xml::Node::nodeName方法的典型用法代码示例。如果您正苦于以下问题:C++ Node::nodeName方法的具体用法?C++ Node::nodeName怎么用?C++ Node::nodeName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在xml::Node的用法示例。


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

示例1: childIterator

map<uint, terrainFactory> setFactories(Poco::XML::Node* node)
{
	using namespace Poco;

	map<uint, terrainFactory> factories;
	
	XML::NodeIterator childIterator(node, XML::NodeFilter::SHOW_ELEMENT);
	XML::Node* tileNode = childIterator.nextNode();
	while (tileNode)
	{
		if (tileNode->nodeName() == "tile")
		{
			ScopedNamedNodeMap tileAttributes(tileNode->attributes());

			stringstream id(tileAttributes->getNamedItem("id")->getNodeValue());
			uint tileId = 0;
			id >>tileId;

			auto propertiesNode = tileNode->firstChild()->nextSibling();
			auto propertyNode = propertiesNode->firstChild()->nextSibling();
			if (propertyNode->hasAttributes())
			{
				ScopedNamedNodeMap attributes(propertyNode->attributes());
				setFactory(factories, tileId, attributes->getNamedItem("value")->nodeValue());
			}
			else
			{
				throw FileFormatException("TMX file malformed: tile>>properties should have a child, but does not.");
			}
		}
		
		tileNode = childIterator.nextNode();
	}
开发者ID:ChristopherCanfield,项目名称:rts-wars,代码行数:33,代码来源:TiledMapParser.cpp

示例2: parse

GameMap::UniquePtr TiledMapParser::parse()
{
	using namespace Poco;

	loadMapImages(fileInfo);
	
	ifstream in(Constants::MapPath + fileInfo.getTmxFileName());
	if (!in.good())
	{
		throw FileLoadException("Unable to load the Tiled tmx file: " + Constants::MapPath + fileInfo.getTmxFileName());
	}

	XML::InputSource src(in);
	
	XML::DOMParser parser;
	AutoPtr<XML::Document> doc = parser.parse(&src);

	MapProperties properties;
	std::map<uint, terrainFactory> terrainFactories;

	GameMap::NavGraphList navGraph;

	XML::NodeIterator iterator(doc, XML::NodeFilter::SHOW_ELEMENT);
	XML::Node* node = iterator.nextNode();
	while (node)
	{
		if (node->nodeName() == "map")
		{
			if (!node->hasAttributes()) throw FileFormatException("The Tiled map file is formatted incorrectly: there are no map attributes.");

			// Load the properties.
			properties = processMapProperties(node);
		
			ScopedNodeList childNodes = node->childNodes();
			for (int i = 0; i < childNodes->length(); ++i)
			{
				auto childNode = childNodes->item(i);
				if (childNode->nodeName() == "tileset")
				{
					terrainFactories = setFactories(childNode);
				}
				else if (childNode->nodeName() == "layer")
				{
					processTerrain(navGraph, terrainFactories, childNode, properties);
				}
			}
		}
		else
		{
			// Postconditions:
			Assert<FileFormatException>(properties.rows != 0, "Properties not loaded from Tiled map file.");
			Assert<FileFormatException>(!navGraph.empty(), "NavGraph not loaded from Tiled map file.");

			// Everything has been processed, so no need to continue iteration.
			break;
		}

		node = iterator.nextNode();
	}

	GameMap::UniquePtr gameMap = make_unique<GameMap>(properties.rows, properties.columns, 
			properties.tileHeight, properties.tileWidth, move(navGraph));
	return move(gameMap);
}
开发者ID:ChristopherCanfield,项目名称:rts-wars,代码行数:64,代码来源:TiledMapParser.cpp


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