XML内容如下: 的test.xml
<root>
<headers>
<elementA>Google</elementA>
<elementB>FaceBook</elementB>
</headers>
</root>
我想使用poco XML库解析器来获取XML内容。 我使用以下代码解析器/ root / headers / elementA Node获取内容(&#34; Google&#34;);
std::ifstream in(“test.xml”);
Poco::XML::InputSource src(in);
Poco::XML::DOMParser parser;
Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&src);
Poco::XML::NodeIterator it(pDoc, Poco::XML::NodeFilter::SHOW_ELEMENTS);
Poco::XML::Node* pRootNode = it.root();
Poco::XML::XMLString xmlPath("/headers/elementA");
Poco::XML::Node * pNewNode = pRootNode->getNodeByPath(xmlPath);
程序运行成功,但 pNewNode 指针为NULL,我引用了poco office站点文档,但没有找到任何有用的示例。我也使用谷歌搜索主题但仍然没有找到任何有用的信息。 谁能帮我解决问题呢。我花了三天时间解决这个问题。
答案 0 :(得分:0)
你的路径中缺少/ root:
std::ifstream in(“test.xml”);
Poco::XML::InputSource src(in);
Poco::XML::DOMParser parser;
Poco::AutoPtr<Poco::XML::Document> pDoc = parser.parse(&src);
Poco::XML::NodeIterator it(pDoc, Poco::XML::NodeFilter::SHOW_ELEMENT);
Poco::XML::Node* pRootNode = it.root();
Poco::XML::XMLString xmlPath("/root/headers/elementA");
Poco::XML::Node * pNewNode = pRootNode->getNodeByPath(xmlPath);
std::cout << (pNewNode ? "not null" : "null") << std::endl;