adobe / adobe/XMP-Toolkit-SDK

XMP Toolkit DOM API

Open
#99 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
262
Forks
110
PR merge metrics
No merged PRs in 30d

Description

I notice that the XMP Toolkit SDK has a relatively new DOM API, as documented in XMPAddendumProgrammersGuide.pdf. This lets you navigate a node-based object model e.g.
```
auto registry = IDOMImplementationRegistry::GetDOMImplementationRegistry();
auto serializer = registry->GetSerializer("rdf");
auto metadata = IMetadata::CreateMetadata();
auto simpleNode = ISimpleNode::CreateSimpleNode(kXMP_NS_XMP, AdobeXMPCommon::npos, "CreatorTool", AdobeXMPCommon::npos);
if (simpleNode) {
simpleNode->SetValue("Test", AdobeXMPCommon::npos); metadata->InsertNode(simpleNode);
}
auto defaultMap = INameSpacePrefixMap::GetDefaultNameSpacePrefixMap();
auto str = serializer->Serialize(metadata, defaultMap);
auto xx = str->c_str();
std::cout << xx;
```
I don't see much docs or use online, so I'd to know more about it:
* Does anyone here use it in preference to the older XMPCore interfaces? What was your experience like?
* Why would I choose the DOM API over the older API? It seems the older API didn't have a distinct object model, so navigation there has to go through paths and enumerating tags is an all-at-once affair.
* Does the DOM API faster or use less memory over the older API?
* Does the DOM API do lazy or incremental parsing or is the entire object graph set up during the initial parse?
* Can the Adobe engineers/managers who wrote the DOM API share some of the design considerations and motivations for writing this? Will this be developed further?

Thanks, folks.

Contributor guide

Open the contributing guide

Research direction

Start with XMPAddendumProgrammersGuide.pdf and the DOM API example in the issue, then review the referenced DOM interfaces such as IDOMImplementationRegistry, IMetadata, and ISimpleNode. Done would require clear documentation answering the API's use cases, trade-offs, parsing behavior, performance, and future direction.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
documentation
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.