Tinyxml、TinyXpathを使用してC++に方法はありますか?
<ns:abcd>
<ns:defg>
<ns:hijk>
</ns:hijk>
</ns:defg>
</ns:abcd>
に変換します
<abcd>
<defg>
<hijk>
</hijk>
</defg>
</abcd>
編集:
Tinyxml と Tinyxpath を使用していました。
私のワークフローは次のとおりです。
a) TinyXML を使用して dom-tree を作成する
b) xpath 評価のために dom-tree を Tinyxpath に渡す
名前空間の削除を追加するには、次の関数を使用しました:
void RemoveAllNamespaces(TiXmlNode* node)
{
TiXmlElement* element = node->ToElement();
if(!element){
return;
}
std::string elementName = element->Value();
std::string::size_type idx = elementName.rfind(':');
if(idx != std::string::npos)
{
element->SetValue(elementName.substr( idx + 1).c_str());
}
TiXmlNode* child = element->IterateChildren(NULL);
while(child)
{
RemoveAllNamespaces(child);
child = element->IterateChildren(child);
}
}
したがって、ワークフローは次のように変更されました。
a) TinyXML を使用して dom-tree を作成する
b) を使用して、domtree から名前空間を削除しますRemoveAllNamespaces(domtree.Root() )
c) xpath 評価のために modified-dom-tree を Tinyxpath に渡す