I am trying to pull out data from an XML document that seems to use relative references like this:
<action>
<topic reference="../../action[110]/topic"/>
<context reference="../../../../../../../../../../../../../contexts/items/context[2]"/>
</action>
Two questions:
- Is this normal or common?
- Is there a way to handle this with linq to XML / XDocument or would I need to manually traverse the document tree?
Edit:
To clarify, the references are to other nodes within the same XML document. The context node above references a list of contexts, and says to get the one at index 2.
The topic node worries me more because it’s referencing a certain other action’s topic, which could in turn reference a list of topics. If that wasn’t happening I would have just loaded the lists of contexts and topics in a cache and looked them up that way.
I ended up manually traversing the tree. But with extension methods it’s all nice and out of the way. In case it might help anyone in the future, this is what I threw together for my use-case:
And then you’d use it like this (
itemis anXElement):