#c #xerces #xerces-c
#c #xerces #xerces-c
Вопрос:
Я пытаюсь проанализировать XML-файл, расположенный в строке, и обновить некоторые атрибуты в xml. Я использую синтаксический анализатор xerces c для того же и использую MemBufInputSource
и parse
для того же.
cout << "Got the string object" << endl;
cout << "The XML is: " << str.str() << endl;
string registrationRequest=str.str();
XMLPlatformUtils::Initialize();
XercesDOMParser *parser = new XercesDOMParser;
parser->setValidationScheme(XercesDOMParser::Val_Never);
parser->setDoNamespaces(false);
parser->setDoSchema(false);
MemBufInputSource registrationRequest_buf((const XMLByte*)registrationRequest.c_str(),
registrationRequest.size(), "dummy", false);
parser->parse(registrationRequest_buf);
DOMDocument *doc = parser->getDocument();
DOMElement* elementRoot = doc->getDocumentElement();
char *RootName = XMLString::transcode(elementRoot->getTagName());
XMLCh *ns = XMLString::transcode("xmlns");
XMLCh *val = XMLString::transcode("Some Value that I want to update");
elementRoot->removeAttribute(ns);
elementRoot->setAttribute(ns, val);
DOMNodeList* children = elementRoot->getChildNodes();
const XMLSize_t nodeCount = children->getLength();
val = XMLString::transcode("");
for( XMLSize_t xx = 0; xx < nodeCount; xx )
{
DOMNode* currentNode = children->item(xx);
if( currentNode->getNodeType() amp;amp; // true is not NULL
currentNode->getNodeType() == DOMNode::ELEMENT_NODE ) // is element
{
DOMElement* currentElement
= dynamic_cast< xercesc::DOMElement* >( currentNode );
currentElement->setAttribute(ns, val);
}
}
Может кто-нибудь, пожалуйста, помочь, как я могу записать мой обновленный xml обратно в строку.