2012-02-24 57 views
0

我有一個XML文件,它看起來像這樣顯示它...如何獲得一個屬性的值,然後在Tmemo

<fruits> 
    <apple color="red"/> 
    <orange color="orange"/> 
    <banana color="yellow"/> 
</fruits> 

我想借屬性顏色的價值每個元素,並將其顯示在備忘錄上。我知道如何在備忘錄中顯示元素的值,但我似乎無法弄清楚如何爲屬性執行此操作。這是到目前爲止我的代碼...

TiXmlDocument XMLFile; 
XMLFile.LoadFile("fruits.xml"); 

TiXmlHandle XMLFileHandle(&XMLFile); 
TiXmlElement* root = XMLFile .FirstChildElement("fruits"); 

for(TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement()) 
{ 
    memoOverview->Lines->Add(elem->Attribute("val")->GetText()); 
} 

我使用TinyXML的XML文件的解析,而我在C++和C++ Builder這樣做。

+0

的代碼沒有得到語法高亮自動,因爲你還沒有列入其中谷歌代碼美化識別標籤。請參閱[Meta上的問題73082](http://meta.stackexchange.com/questions/72082/changes-to-syntax-highlighting)。 您可以通過在代碼塊前加上一個'<! - language:cpp - >'標籤來指定代碼的語言。有關信息,請參閱[help](http://stackoverflow.com/editing-help#syntax-highlighting)。 – stukelly 2012-02-25 21:41:23

回答

0
TiXmlDocument XMLFile; 
XMLFile.LoadFile("fruits.xml"); 

TiXmlHandle XMLFileHandle(&XMLFile); 
TiXmlElement* root = XMLFile.FirstChildElement("fruits"); 

char stringBuffer[64]; 

for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement()) 
{ 
    if (strcmp(LastChildElement->Value(), "color") == 0) 
    { 
    strncpy(stringBuffer, LastChildElement->Attribute("color"), sizeof(stringBuffer)); 
    } 

    memoOverview->Lines->Add(stringBuffer); 
} 
0

the documentation,你需要elem->Attribute("color")更換elem->Attribute("val")->GetText()

memoOverview->Lines->Add(elem->Attribute("color")); 
+0

它是用屬性(「顏色」)發佈的。我使用我創建的一個例子發佈了問題,但忘記更改代碼的那部分。因爲它的原因,它仍然無法工作。我最終做的是將該屬性複製爲一個字符串,然後使用該字符串將其添加到備忘錄中 – livelaughlove 2012-02-27 14:47:23