Riferimenti alle entità espansi e non conservatiEntity References are Expanded and Not Preserved

Quando il riferimento a un'entità viene espanso e sostituito dal testo che esso rappresenta, il nodo XmlEntityReference non viene creato.When the entity reference is expanded and replaced by the text it represents, the XmlEntityReference node is not created. Invece, la dichiarazione di entità viene analizzata e i nodi creati dal contenuto della dichiarazione vengono copiati al posto di XmlEntityReference.Instead, the entity declaration is parsed, and nodes created from the content in the declaration are copied in the place of the XmlEntityReference. Nell'esempio di &publisher;, &publisher; non viene quindi salvato, ma viene creato un nodo XmlText.Therefore, in the &publisher; example, the &publisher; is not saved, but instead, an XmlText node is created.

Struttura ad albero espansaexpanded tree structure
Struttura ad albero per i riferimenti alle entità espansiTree structure for entity references that are expanded

Le entità carattere, come B o <, non sono mantenute,Character entities such as B or < are not preserved. ma vengono sempre espanse e rappresentate come nodi di tipo text.Instead, they are always expanded and represented as text nodes.

Per conservare i nodi XmlEntityReference e i nodi figlio del riferimento all'entità associati a quest'ultima, impostare il flag EntityHandling su ExpandCharEntities.To preserve XmlEntityReference nodes and child nodes of the entity reference attached to it, set the EntityHandling flag to ExpandCharEntities. In caso contrario, lasciare il flag EntityHandling sull'impostazione predefinita, ovvero ExpandEntities.Otherwise, leave the EntityHandling flag at the default, which is to ExpandEntities. In questo caso nel DOM non si osserveranno nodi dei riferimenti alle entità.In this case, you will not see entity reference nodes in the DOM. I nodi saranno sostituiti da copie dei nodi figlio della dichiarazione di entità.The nodes are replaced by the nodes that are copies of the child nodes of the entity declaration.

Una conseguenza della mancata conservazione dei riferimenti alle entità è che quando il documento viene salvato e passato a un'altra applicazione, l'applicazione ricevente non è in grado di rilevare che i nodi sono stati generati da un riferimento all'entità.One side effect of not preserving entity references is that when the document is saved and passed on to another application, the receiving application does not know that the nodes were generated by an entity reference. Tuttavia, se i riferimenti alle entità vengono conservati, l'applicazione ricevente rileva un riferimento all'entità e legge i nodi figlio.However, when entity references are preserved, a receiving application sees an entity reference and reads the child nodes. È evidente che i nodi figlio rappresentano le informazioni presenti nella dichiarazione di entità.It is apparent that the child nodes represent the information that was in the entity declaration. Se i riferimenti alle entità vengono conservati, ad esempio, il DOM possiede teoricamente la struttura seguente.For example, the DOM theoretically has the following structure if entity references are preserved.

XmlElement: publisherXmlElement: publisher

XmlEntityReference: &publisher;XmlEntityReference: &publisher;

XmlText: Microsoft PressXmlText: Microsoft Press

Se i riferimenti alle entità vengono espansi nel DOM, come avviene in base al metodo predefinito, il tipo di struttura ad albero è il seguente:If entity references are expanded in the DOM, which is the default method, the structure has this type of tree:

XmlElement: publisherXmlElement: publisher

XmlText: Microsoft PressXmlText: Microsoft Press

Si noti che il nodo del riferimento all'entità è scomparso e che l'applicazione ricevente non riesce a rilevare che il nodo XmlText contenente "Microsoft Press" era stato creato da una dichiarazione di entità.Notice that the entity reference node is gone, and the receiving application cannot tell that the XmlText node containing "Microsoft Press" was created from an entity declaration.

Se si usa un lettore che non riesce a risolvere le entità, il metodo Load genera un'eccezione quando incontra un riferimento all'entità.If you use a reader that cannot resolve entities, the Load method throws an exception when it encounters an entity reference.

Vedere ancheSee Also

Modello DOM (Document Object Mode) XMLXML Document Object Model (DOM)