我無法正確使用TinyXML2至解析特定標籤的XML頁面。盲目解析特定標籤的XML頁面
基本上,我被要求通過C++解析一個HTML頁面。我使用(非常古老的)tidyHTML庫來首先將我的HTML頁面「翻譯」爲XML頁面。然後,我想使用TinyXML2來解析這些新創建的XML頁面,用於特定標記的內容(title,h1,meta keywords,...)。
爲此,我通過我的XML頁面中的所有標籤試圖循環,使用此代碼:
XMLDocument doc;
doc.Parse(cleanedHTML.c_str());
XMLNode* currentNode;
if(currentNode->NoChildren())
{
while(!currentNode->NextSibling())
{
currentNode=currentNode->Parent();
if(!currentNode)
return NULL;
}
currentNode=currentNode->NextSibling();
}
else
{
currentNode=currentNode->FirstChild();
}
doc.Print();
std::string nodeName = currentNode->LastChild()->Value();
return nodeName;
可能有幾件事錯這個代碼 - 毫無疑問,我顯然是一個業餘愛好者。但結果仍令我困惑:nodeName返回「USER = root」無論我正在解析的頁面。
我想選擇這個節點的相關元素,比如currentNode->FirstChildElement()或LastChildElement(),甚至兄弟姐妹......但每次它會導致分段錯誤,我無法理解。
我讀過Xpath會是一個很好的方式去做我想做的事情,但是我再次耗盡時間,我擔心我無法把我的想法在相對較短的通知周圍Xpath周圍。
我大概在看所有錯誤的方式,或者我應該使用Accept()?
我真的覺得有點失落在這裏,將不勝感激任何幫助,你們會如此善良,以提供!
我想借此機會也感謝過去幫助過我的這個網站。 真是太神奇了。
預先感謝您的回覆!
你驗證了「清理」 XML其實,** **有效的XML? – WhozCraig
那麼我首先嚐試一個非常簡單的代碼(6個元素和一打節點頂部),以及... xmlvalidation.com不會遇到任何錯誤。我現在要嘗試解析類似的,但只有** ELEMENTS **和通過** FOR **循環。 – Gyromitre