【问题标题】:How to get the value of an attribute and display it on a Tmemo如何获取属性的值并将其显示在 Tmemo 上
【发布时间】:2012-02-24 19:23:02
【问题描述】:

我有一个看起来像这样的 xml 文件...

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

我想为每个元素获取属性 color 的值,并将其显示在备忘录上。我知道如何在备忘录上显示元素的值,但我似乎无法弄清楚如何为属性执行此操作。到目前为止,这是我的代码...

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 中执行此操作。

【问题讨论】:

  • 代码不会自动获得语法高亮,因为您没有包含 Google Code Prettify 识别的标签。见question 73082 on Meta。您可以通过在代码块前包含&lt;!-- language: cpp --&gt; 标记来指定代码的语言。有关信息,请参阅help

标签: xml xml-parsing c++builder tinyxml tmemo


【解决方案1】:

根据the documentation,需要将elem-&gt;Attribute("val")-&gt;GetText()替换为elem-&gt;Attribute("color")

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

【讨论】:

  • 它本来是用 Attribute("color") 发布的。我使用我立即创建的示例发布了这个问题,但忘记更改那部分代码。并且由于 w/e 原因它仍然无法正常工作。我最终做的是将属性复制为字符串,并使用该字符串将其添加到备忘录中
【解决方案2】:
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 );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多