本文整理汇总了C++中XmlDocument::rootNode方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlDocument::rootNode方法的具体用法?C++ XmlDocument::rootNode怎么用?C++ XmlDocument::rootNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlDocument
的用法示例。
在下文中一共展示了XmlDocument::rootNode方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load
void FlowData::load()
{
if(!mReady)
{
Timer timer(true);
XmlDocument * pointsDoc = new XmlDocument(dataSource);
XmlElement rootNode = pointsDoc->rootNode();
if(rootNode.hasChildren())
{
XmlElement tagNode = rootNode.findChild("tag");
XmlElement drawingNode = tagNode.findChild("drawing");
// Now get all the drawingNode's children.. and only worry about the stroke nodes.
if(drawingNode.hasChildren())
{
std::vector<XmlElement> strokeNodes = drawingNode.children();
// std::vector<XmlElement> strokeNodes = rootNode.xpath("//tag/drawing//stroke");
if(strokeNodes.size() > 0)
{
int totalPoints = 0;
// Now declare some variables to reuse in our loop.
FlowPoint lastPt(Vec2f::zero(), Vec2f::zero(), -1.f);
for(std::vector<XmlElement>::iterator it = strokeNodes.begin(); it < strokeNodes.end(); it++)
{
XmlElement strokeNode = *it;
if(strokeNode.name() == "stroke")
{
// Get all the point nodes.
std::vector<XmlElement> pointNodes = strokeNode.children();
// Create a new stroke
std::vector<FlowPoint> * stroke = new std::vector<FlowPoint>;
for(std::vector<XmlElement>::iterator it2 = pointNodes.begin(); it2 < pointNodes.end(); it2++)
{
XmlElement ptNode = *it2;
if(ptNode.name() == "pt")
{
std::string xVal = ptNode.findChild("x").value();
// float x = fromString( xVal );
float x = boost::lexical_cast<float>( xVal );
std::string yVal = ptNode.findChild("y").value();
// float y = fromString( yVal );
float y = boost::lexical_cast<float>( yVal );
std::string timeVal = ptNode.findChild("time").value();
// float time = fromString( timeVal );
float time = boost::lexical_cast<float>( timeVal );
x = mRemapMinX + (mRemapMaxX - mRemapMinX) * x;
y = mRemapMinY + (mRemapMaxY - mRemapMinY) * y;
Vec2f pos(x, y);
Vec2f vel;
if(lastPt.time > -1)
{
vel.x = pos.x - lastPt.getX();
vel.y = pos.y - lastPt.getY();
}
FlowPoint pt(pos, vel, time);
bool shouldAddPoint = false;
if(ignoreRedundantPositions == true)
{
if(lastPt.time > -1)
{
if(pt.getX() != lastPt.getX() && pt.getY() != lastPt.getY())
{
shouldAddPoint = true;
}
}
else
{
shouldAddPoint = true;
}
}
else
{
shouldAddPoint = true;
}
if(shouldAddPoint)
{
totalPoints++;
stroke->push_back(pt);
lastPt = FlowPoint(pt.pos, pt.vel, pt.time);
}
}
}
// Now see if our stroke is long enough.
if(stroke->size() > minNumberOfPointsInStroke)
{
//.........这里部分代码省略.........