XML 文件读到TreeView上

来源:互联网 发布:淘宝店铺免费装修模板 编辑:程序博客网 时间:2024/05/17 22:31
  <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
- <Root>
- <地方电台>
  <Name>新疆1</Name>
  <Url>XJ1</Url>
  <Name>新疆2</Name>
  <Url>XJ2</Url>
  <Name>新疆3</Name>
  <Url>XJ3</Url>
  <Name>新疆4</Name>
  <Url>XJ4</Url>
  </地方电台>
- <国际电台>
  <Name>国际1</Name>
  <Url>GJ1</Url>
  <Name>国际2</Name>
  <Url>GJ2</Url>
  <Name>国际3</Name>
  <Url>GJ3</Url>
  <Name>国际4</Name>
  <Url>GJ4</Url>
  </国际电台>
- <海外电台>
  <Name>海外1</Name>
  <Url>HY1</Url>
  <Name>海外2</Name>
  <Url>HY2</Url>
  <Name>海外3</Name>
  <Url>HY3</Url>
  <Name>海外4</Name>
  <Url>HY4</Url>
  </海外电台>
  </Root>
 
 
 
赋值:
void __fastcall TForm1::XMLtoTree(String fName,TTreeView *Tree)
{
  typedef struct MyRec
  {
 String FName,LName;
  }TMyRec;
  typedef TMyRec* PMyRec;
  TTreeNode *Node;
  PMyRec MyRecPtr;
  int   TreeViewIndex;
  _di_IXMLDocument xml;
  xml = LoadXMLDocument(fName);
  _di_IXMLNode node = xml->DocumentElement;
  _di_IXMLNodeList nodes=node->ChildNodes;
  if(node->HasChildNodes)
 {
   for(int i=0;i<nodes->Count;i++)
  {
     Node=Tree->Items->Add(NULL,nodes->Nodes[i]->GetNodeName());
     for(int j=0;j<nodes->Nodes[i]->ChildNodes->Count;j+=2)
     {
     MyRecPtr=new TMyRec;
     MyRecPtr->FName=nodes->Nodes[i]->ChildNodes->Nodes[j]->GetText();
     MyRecPtr->LName=nodes->Nodes[i]->ChildNodes->Nodes[j+1]->GetText().w_str();
     Tree->Items->AddChildObject(Node,MyRecPtr->FName,MyRecPtr);
     }
  }
 }
}
取值的:
String __fastcall TForm1::GetTreeValue(TTreeView *Tree)
{
  typedef struct MyRec
  { String FName,LName;
  }TMyRec;
  typedef TMyRec* PMyRec;
  PMyRec  MyRecPtr;
  return PMyRec(Tree->Selected->Data)->LName;
}
应用:
用法:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
XMLtoTree("abcd.xml",TreeView1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1DblClick(TObject *Sender)
{
  ShowMessage(GetTreeValue(TreeView1));
}
//---------------------------------------------------------------------------
原创粉丝点击