Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Парсинг xml


Автор: Ventur 13.11.2006, 20:42
Добрый день, господа. Есть маленькая проблема с парсингом xml.  Необходимо вытащить все данные.

Код

<xml>
<docs>
<doc template="t1.doc">
<par name="par1" value="value1"/>
<par name="par2" value="value2"/>
</doc>
<doc template="t2.doc">
<par name="par1" value="value3"/>
</doc>
...
</doc>
<doc template="tn.doc">
<par name="par1" value="valueM"/>
</doc>
...
</docs>
</xml>


В Buider C++ впервые сталкиваюсь с этим, поэтому прошу помощи. Искал на форуме - не нашел, или просто не понял, как это сделать. Прогу нужно написать очень в скорых темпах, так бы не задавал здесь глупые вопросы, а читал help)).

Заранее спасибо.

Автор: Ventur 13.11.2006, 22:44
Дохлая тема))
Или понедельник

Автор: Rodman 13.11.2006, 22:50
Код

procedure TFormXmlTree.btnLoadClick(Sender: TObject);
begin
  OpenDialog1.InitialDir := ExtractFilePath (Application.ExeName);
  if OpenDialog1.Execute then
  begin
    XMLDocument1.LoadFromFile(OpenDialog1.FileName);
    Treeview1.Items.Clear;
    DomToTree (XMLDocument1.DocumentElement, nil);
    TreeView1.FullExpand;
  end;
end;
   
procedure TFormXmlTree.DomToTree (XmlNode: IXMLNode; TreeNode: TTreeNode);
var
  I: Integer;
  NewTreeNode: TTreeNode;
  NodeText: string;
  AttrNode: IXMLNode;
begin
  // skip text nodes and other special cases
  if XmlNode.NodeType <> ntElement then
    Exit;
  // add the node itself
  NodeText := XmlNode.NodeName;
  if XmlNode.IsTextElement then
    NodeText := NodeText + ' = ' + XmlNode.NodeValue;
  NewTreeNode := TreeView1.Items.AddChild(TreeNode, NodeText);
  // add attributes
  for I := 0 to xmlNode.AttributeNodes.Count - 1 do
  begin
    AttrNode := xmlNode.AttributeNodes.Nodes[I];
    TreeView1.Items.AddChild(NewTreeNode,
      '[' + AttrNode.NodeName + ' = "' + AttrNode.Text + '"]');
  end;
  // add each child node
  if XmlNode.HasChildNodes then
    for I := 0 to xmlNode.ChildNodes.Count - 1 do
      DomToTree (xmlNode.ChildNodes.Nodes [I], NewTreeNode);
end;


вот есть кое что... но на Делфи... попробуй перевести... 

Если что спрашивай...

Автор: Ventur 13.11.2006, 23:02
так, ссылка для меня. Потом проанализирую..
http://bdn1.borland.com/article/borcon/files/4118/paper/4118.html


Исходники, что накопал:
Добавлено @ 23:11 
http://delphi.borlandforum.com/impboard/attach/0000041962/Temp.zip
http://www.borlandforum.com/impboard/attach/0000041518/TXMLDocument_bcb6del6_pro.zip

Может, еще кому пригодится.

Тема не закрыта

Автор: malor 13.5.2007, 16:05
Ventur, можешь выложить код(Delphi/Builder), которым пропарсил свой xml-файл?

Автор: Klin 13.5.2007, 19:31
malor, последнее посещение Ventur`а было 20.11.2006. Я конечно оптимист  smile  , но думаю не нужно питать особых надежд на ответ от него. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)