1 #include <Poco/DOM/DOMParser.h>
2 #include <Poco/DOM/DOMWriter.h>
4 #include <Poco/DOM/NodeIterator.h>
5 #include <Poco/DOM/NodeFilter.h>
6 #include <Poco/DOM/AutoPtr.h>
7 #include <Poco/DOM/NamedNodeMap.h>
8 #include <Poco/XML/XMLWriter.h>
10 #include <Poco/SharedPtr.h>
11 #include <Poco/AutoPtr.h>
25 :pOutDoc(nullptr),
errorMsg(
""), _IsError(false)
27 pOutDoc =
new Poco::XML::Document;
29 pOutDoc->appendChild(pRoot);
37 Poco::XML::InputSource sourceDoc(is);
38 Poco::XML::DOMParser parser;
39 Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&sourceDoc);
40 Poco::XML::NodeIterator it_doc(pDoc, Poco::XML::NodeFilter::SHOW_ALL);
41 Poco::XML::Node* pNode = it_doc.nextNode();
42 Poco::XML::Node* docNode = pNode;
49 Poco::AutoPtr<Poco::XML::Element> pDocElem =
static_cast<Poco::XML::Element*
>(pOutDoc->importNode(docNode,
true));
50 pRoot->appendChild(pDocElem);
52 pNode = it_doc.nextNode();
57 catch(Poco::Exception& e)
59 errorMsg = e.displayText();
68 Poco::XML::DOMWriter writer;
69 writer.setNewLine(
"\n");
70 writer.setOptions(Poco::XML::XMLWriter::PRETTY_PRINT | Poco::XML::XMLWriter::WRITE_XML_DECLARATION);
71 writer.writeNode(os, pOutDoc);
86 Poco::XML::InputSource sourceDoc(is);
87 Poco::XML::DOMParser parser;
88 Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&sourceDoc);
89 Poco::XML::NodeIterator it_doc(pDoc, Poco::XML::NodeFilter::SHOW_ALL);
90 Poco::XML::Node* pNode = it_doc.nextNode();
96 Poco::AutoPtr<Poco::XML::NamedNodeMap> pMap = pNode->attributes();
99 for (
size_t i=0;i<pMap->length();++i)
101 if (pMap->item(i)->nodeValue().empty())
102 pMap->item(i)->setNodeValue(
"0");
107 pNode = it_doc.nextNode();
111 catch(Poco::Exception& e)
113 errorMsg = e.displayText();
124 Poco::XML::InputSource sourceDoc(is);
125 Poco::XML::DOMParser parser;
126 Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&sourceDoc);
127 Poco::XML::NodeIterator it_doc(pDoc, Poco::XML::NodeFilter::SHOW_ALL);
128 Poco::XML::Node* pNode = it_doc.nextNode();
134 Poco::AutoPtr<Poco::XML::NamedNodeMap> pMap = pNode->attributes();
137 for (
size_t i=0;i<pMap->length();++i)
140 throw Poco::Exception(
"Bad xml source: '"+pNode->nodeName()+
" "+pMap->item(i)->nodeName()+
"=' is empty.");
146 std::stoull(pMap->item(i)->nodeValue());
148 catch(std::exception& e)
150 throw Poco::Exception(
"Bad xml source: '"+pNode->nodeName()+
" "+pMap->item(i)->nodeName()+
"=' cannot be convert to unsigned long long.");
156 throw Poco::Exception(
"Bad xml source: '"+pNode->nodeName()+
"' have empty attribute list.");
158 pNode = it_doc.nextNode();
162 catch(Poco::Exception& e)
164 errorMsg = e.displayText();