키워드를 사용하여 원하는 요소를 찾으려고합니다. 첫 번째 요소 인 경우에만 작동 할 수 있습니다.TinyXML2에서 검색 키워드로 속성을 사용하는 방법 (C++)
bool readXML(){
string gateWay_str="",user_Input="";
XMLDocument XML_file;
XML_file.LoadFile("exception_ip.xml"); //XML file Name
XMLHandle docHandle(&XML_file); //XMLHandle
XMLNode* node_ctrl; //Node pointer
XMLElement* gateWay_Ele = docHandle.FirstChildElement("exception_ip").FirstChildElement("ip").ToElement(); //Get Node by XMLHandle and turn to Element
cout<<"Test ip3="; //show to user
cin>>user_Input; //user input
if(gateWay_Ele){ //is gateWay_Ele null?
gateWay_str=gateWay_Ele->Name(); //get Element name and show
cout<< "Got gateWay_Ele = "<<gateWay_str<<endl;
}
if(gateWay_Ele ->Attribute("ip3",(user_Input.c_str()))){ //find Attribute where ip3 = "user input"
node_ctrl=gateWay_Ele->FirstChild(); //make node_ctrl point FirstChild
if(node_ctrl==nullptr){ //is nullptr?
cout<<"node_ctrl = nullptr";
return false;
}
else{
gateWay_Ele=node_ctrl->ToElement(); //turn node_ctel to Element
gateWay_str = gateWay_Ele->GetText(); //get Text
cout<<"GateWay = "<<gateWay_str<<endl; //show
return true; //return true
}
}
return false;
}
내 XML 입력 23
내가 사용 NextSiblingElement ("IP"를 시도했을 때
<?xml version="1.0" ?>
<exception_ip>
\t <ip ip3="23"> \t
<gateway>123.123.23.1</gateway>
<dnsp>dnsp23</dnsp>
<dnss>dnss23</dnss>
\t </ip>
\t <ip ip3="24"> \t
<gateway>123.123.24.1</gateway>
<dnsp>dnsp24</dnsp>
<dnss>dnss24</dnss>
\t </ip>
</exception_ip>
그것은 단지 일이다) 포인트 유지하기 g에서 다음 형제 요소로 이동합니다. 하지만 그냥 무한 루프
do{
if(gateWay_Ele ->Attribute("ip3",(user_Input.c_str()))){ //find Attribute where ip3 = "user input"
node_ctrl=gateWay_Ele->FirstChild(); //make node_ctrl point FirstChild
if(node_ctrl==nullptr){ //is nullptr?
cout<<"node_ctrl = nullptr";
return false;
}
else{
gateWay_Ele=node_ctrl->ToElement(); //turn node_ctel to Element
gateWay_str = gateWay_Ele->GetText(); //get Text
cout<<"GateWay = "<<gateWay_str<<endl; //show
return true; //return true
}
}
else{
gateWay_Ele->NextSiblingElement("ip");
}
}while(true);
감사합니다!