2012-02-24 52 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