求助C++如何处理下列xml文档?
xml文档如下:
<RegionCoordinatesList>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>0</positionY>
</RegionCoordinates>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>0</positionY>
</RegionCoordinates>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>0</positionY>
</RegionCoordinates>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>0</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
我现在想改变xml文档里面各个字段的值,如改为:
<RegionCoordinatesList>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>0</positionY>
</RegionCoordinates>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>4</positionY>
</RegionCoordinates>
<RegionCoordinates>
<positionX>4</positionX>
<positionY>4</positionY>
</RegionCoordinates>
<RegionCoordinates>
<positionX>4</positionX>
<positionY>0</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
用C++写一个updateValue()函数怎么写啊?如果只是像下面这样的话,我可以搞定:
<RegionCoordinatesList>
<RegionCoordinates>
<positionX>0</positionX>
<positionY>0</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
我的代码如下:
while(xmlRegionCoordinatesListNode)
{
xmlDoc->getNodeNameValue(xmlRegionCoordinatesListNode, &tagName, &tagValue);
if(strcmp(tagName, TAG_RegionCoordinates) == 0)
{
xmlNode_t*xmlRegionCoordinatesNode;
xmlNode_t*xmlNext2Node;
xmlRegionCoordinatesNode = xmlRegionCoordinatesListNode;
xmlRegionCoordinatesNode = xmlNext2Node = xmlDoc->getFirstChild(xmlRegionCoordinatesNode, xmlRegionCoordinatesListNode);
while(xmlRegionCoordinatesNode)
{
xmlDoc->getNodeNameValue(xmlRegionCoordinatesNode, &tagName, &tagValue);
if(strcmp(tagName, TAG_PositionX) == 0)
{
if(! from_string<int>(tagIntValue, std::string(tagValue), std::dec))
{
strTemp = "the PositionX tag value must be a integer!";
m_nLastServiceErr = ERR_XML_CONTENT;
return internalErr2PSIAStatus(getLastServiceError(), pStatusResponse, strTemp.c_str());
}
else
RegionParams.positionX = tagIntValue;
}
else if(strcmp(tagName, TAG_PositionY) == 0)
{
if(! from_string<int>(tagIntValue, std::string(tagValue), std::dec))
{
strTemp = "the PositionY tag value must be a integer !";
m_nLastServiceErr = ERR_XML_CONTENT;
return internalErr2PSIAStatus(getLastServiceError(), pStatusResponse, strTemp.c_str() );
}
else
RegionParams.positionY = tagIntValue;
}
xmlRegionCoordinatesNode = xmlDoc->getNextSibling(xmlRegionCoordinatesNode, xmlNext2Node);
}
}
}
[解决办法]
ls 能给我一份你的资料吗?
我以前是用tinyXML
想用微软提供的做一下,呵呵
非mfc , 如果是mfc提供的,那就算了
谢谢了啊
[解决办法]
boost 里面有相关组件可以对xml进行解析,可以看看。
[解决办法]
xerces c++也可以读取与改变的
[解决办法]
曾经用bison做过, 本来还想做个自动工具, 分析DTD,XSD自动生成C代码的, 后来xml用的少了就算了...
[解决办法]
随便找个xml parse库
[解决办法]
各种xml解析库