Lavora con le query degli oggetti simili a XPath
Contents
[
Hide
]
Questa funzione è supportata dalla versione 19.3 o maggiore.
Lavora con le query degli oggetti simili a XPath
Utilizzando Aspose.3D for .NET, è possibile selezionare uno o più oggetti nel nodo corrente utilizzando la sintassi di query XPath-Like. La sintassi della query è stata ispirata da XPath, quindi la maggior parte dei concetti e della sintassi sono simili, la sintassi della query è compatibile con l’URL, quindi verrà utilizzata nella nostra versione cloud in futuro. Di solito, una sintassi è composta daCondizione del nome prefisso / Condizione del nome /.
| Prefisso = | Descrizione = |
|---|---|
| // | Selettore globale, qualsiasi discendente viene trattato come nodo radice per eseguire la selezione |
| / | Selettore radice, solo un antenato serve a guardare in alto |
| Altro | Supponiamo che sia un nome e seleziona l’oggetto in base al nome in modalità selettore globale |
Il nome è una stringa che corrisponde al nome dell’oggetto o il carattere jolly * viene utilizzato per corrispondere a qualsiasi nome. La condizione è un’espressione per decidere se selezionare l’oggetto, sono supportati gli operatori booleani (non) e o gli operatori di confronto >/</>=/<=/=/!=. Per accedere a una proprietà nell’espressione di condizione, viene utilizzato il prefisso ‘@’, ad esempio @Name leggerà la proprietà Name. Una sintassi di collegamento per il tipo di test è supportata da <Mesh>, equivalente a [@Type = 'Mesh'], gli identificatori senza preventivo verranno trattati come una stringa. |
Seleziona tutti i nodi usando il selettore globale della sintassi
//<Node>Questa è la sintassi breve di:
//*[<Node>]O
//*[@Type = Node]Selezionare un nodo di secondo livello con un genitore visibile
//<Node>[@Visible]/<Node>Di seguito è riportato il codice di esempio per interrogare uno o più oggetti:
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET
//Create a scene for testing
Scene s = new Scene();
var a = s.RootNode.CreateChildNode("a");
a.CreateChildNode("a1");
a.CreateChildNode("a2");
s.RootNode.CreateChildNode("b");
var c = s.RootNode.CreateChildNode("c");
c.CreateChildNode("c1").AddEntity(new Camera("cam"));
c.CreateChildNode("c2").AddEntity(new Light("light"));
/*The hierarchy of the scene looks like:
- Root
- a
- a1
- a2
- b
- c
- c1
- cam
- c2
- light
*/
//select objects that has type Camera or name is 'light' whatever it's located.
var objects = s.RootNode.SelectObjects("//*[(@Type = 'Camera') or (@Name = 'light')]");
//Select single camera object under the child nodes of node named 'c' under the root node
var c1 = s.RootNode.SelectSingleObject("/c/*/<Camera>");
// Select node named 'a1' under the root node, even if the 'a1' is not a directly child node of the
var obj = s.RootNode.SelectSingleObject("a1");
//Select the node itself, since the '/' is selected directly on the root node, so the root node is selected.
obj = s.RootNode.SelectSingleObject("/");