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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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("/"); |