Versuche DomNodes als Baum darzustellen

Alles rund um die Programmierung mit Qt
Antworten
mbreitinger
Beiträge: 15
Registriert: 16. November 2005 11:00
Wohnort: Blaubeuren
Kontaktdaten:

Versuche DomNodes als Baum darzustellen

Beitrag von mbreitinger »

Hallo,

die folgende Funktion zeigt nur Elemente aber keine Attribute an und ich versteh nicht warum:

Code: Alles auswählen

fillNode2Tree(QDomNode node, QTreeWidgetItem* item)
{
	if (node.isNull()) return;
	node = node.firstChild();
	QTreeWidgetItem* child;
	QString temp;
	while (!node.isNull())
	{
		child = new QTreeWidgetItem();
		child->setText(0, node.nodeName());
		switch (node.nodeType())
		{
			case QDomNode::ElementNode:
				temp = "element";
				break;
			case QDomNode::AttributeNode:
				temp = "attribute";
				break;
			case QDomNode::TextNode:
				temp = "text";
				break;
			case QDomNode::CDATASectionNode:
				temp = "CDATA";
				break;
			case QDomNode::EntityReferenceNode:
				temp = "entity ref";
				break;
			case QDomNode::EntityNode:
				temp = "entity";
				break;
			case QDomNode::ProcessingInstructionNode:
				temp = "proc instruction";
				break;
			case QDomNode::CommentNode:
				temp = "comment";
				break;
			case QDomNode::DocumentNode:
				temp = "document";
				break;
			case QDomNode::DocumentTypeNode:
				temp = "doc type";
				break;
			case QDomNode::DocumentFragmentNode:
				temp = "doc fragment";
				break;
			case QDomNode::NotationNode:
				temp = "notation";
				break;
			case QDomNode::BaseNode:
				temp = "base";
				break;
			case QDomNode::CharacterDataNode:
				temp = "char data";
				break;
			default:
				temp = "<unknown>";
				break;
		}
		child->setText(1, temp);
		child->setText(2, node.nodeValue());
		if (item == 0)
		{
			ui.treeXML->addTopLevelItem(child);
		}
		else
		{
			item->addChild(child);
		}
		fillNode2Tree(node, child);
		node = node.nextSibling();
	}
}
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Ohne jetzt das ganze testen zu können wage ich mal einen Schuss ins Blaue:

Kann es sein, dass ein Attribut kein Node ist und deswegen firstChild() keine Attribute zurückgibt.
Evtl. müsstest du eine Abfrage einbauen:

Code: Alles auswählen

if (node.hasAttributes())
{
    QDomNamedNodeMap attributes = node.attributes;
    .... verarbeitung der attribute ...
}
Wie gesagt is nur n Gedanke
Antworten