From 87d2580aad5d339f7fcff2aa058399b1ecf2497c Mon Sep 17 00:00:00 2001 From: kkulling Date: Wed, 2 Sep 2020 17:45:37 +0200 Subject: [PATCH] fix 3mf rel-parsing --- code/AssetLib/3MF/D3MFOpcPackage.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/code/AssetLib/3MF/D3MFOpcPackage.cpp b/code/AssetLib/3MF/D3MFOpcPackage.cpp index 96692fccf..85050b4b4 100644 --- a/code/AssetLib/3MF/D3MFOpcPackage.cpp +++ b/code/AssetLib/3MF/D3MFOpcPackage.cpp @@ -76,11 +76,14 @@ public: void ParseRootNode(XmlNode &node) { ParseAttributes(node); for (XmlNode currentNode = node.first_child(); currentNode; currentNode = currentNode.next_sibling()) { - ParseChildNode(currentNode); + std::string name = currentNode.name(); + if (name == "Relationships") { + ParseRelationsNode(currentNode); + } } } - void ParseAttributes(XmlNode &/*node*/) { + void ParseAttributes(XmlNode & /*node*/) { // empty } @@ -91,18 +94,22 @@ public: return true; } - void ParseChildNode(XmlNode &node) { + void ParseRelationsNode(XmlNode &node) { if (node.empty()) { return; } - OpcPackageRelationshipPtr relPtr(new OpcPackageRelationship()); - std::string name = node.name(); - relPtr->id = node.attribute(XmlTag::RELS_ATTRIB_ID.c_str()).as_string(); - relPtr->type = node.attribute(XmlTag::RELS_ATTRIB_TYPE.c_str()).as_string(); - relPtr->target = node.attribute(XmlTag::RELS_ATTRIB_TARGET.c_str()).as_string(); - if (validateRels(relPtr)) { - m_relationShips.push_back(relPtr); + for (XmlNode currentNode = node.first_child(); currentNode; currentNode = currentNode.next_sibling()) { + std::string name = currentNode.name(); + if (name == "Relationship") { + OpcPackageRelationshipPtr relPtr(new OpcPackageRelationship()); + relPtr->id = node.attribute(XmlTag::RELS_ATTRIB_ID.c_str()).as_string(); + relPtr->type = node.attribute(XmlTag::RELS_ATTRIB_TYPE.c_str()).as_string(); + relPtr->target = node.attribute(XmlTag::RELS_ATTRIB_TARGET.c_str()).as_string(); + if (validateRels(relPtr)) { + m_relationShips.push_back(relPtr); + } + } } }