Comment rédiger une entité de référence (par exemple et nbsp;) à un XMLWriter, lu par XMLNODEREReader?
-
27-09-2019 - |
Question
Arrière plan
Je lis et j'écris un document XML à l'aide du lecteur et de l'écrivain, avec la logique de filtrage entre les opérations de lecture et d'écriture pour déterminer quelles pièces la lecture doit être réécrite (effectivement, il élimine quelques étiquettes) ...
Mon choix de mise en œuvre est actuellement le suivant en utilisant: XMLNODEREReader, XMLWriter et XmlNodeType
using System.Xml;
// Read every node
using (XmlNodeReader reader = new XmlNodeReader(xmlFragment)) {
// But write out only nodes I want
using (XmlWriter writer = XmlTextWriter.Create(sb, writerSettings)) {
while (reader.Read()) {
//... with filtering logic here to choose what is to be written.
// I do want to write out all entity references
if (XmlNodeType.EntityReference == reader.NodeType)
; // but how do I do that here?
}
}
}
Problème
Lorsque je rencontre une référence d'entité avec le lecteur, je reçois une chaîne vide "" dans reader.Value
Cependant c'est vraiment un
Valeur dans la source XML qui a été rencontrée. Il est donc détecté, mais pas disponible pour moi.
Apparemment, un cas de spécialité ou de bord:
J'ai trouvé ce qui suit L'article MSDN qui indique des références d'entité est quelque peu spécial pendant l'analyse, mais je n'ai pas pu l'utiliser vers une solution de travail. Cela semble clairsemé sur les détails - je préférerais qu'il y ait un échantillon de code pour le compléter.
La solution
Vous pouvez référer ce lien: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx
J'espère que cela t'aides!!
Xmlreader.name Propriété
Lorsqu'il est remplacé dans une classe dérivée, obtient le nom qualifié du Node actuel.Node.