3 Stimmen

Gibt es das Java URIResolver-Konzept auch in C# und .NET?

Im Java XML Transformation Package gibt es ein Konzept, das als URIResolver Ein Objekt, das diese Schnittstelle implementiert und vom Prozessor aufgerufen werden kann, um einen in document(), xsl:import oder xsl:include verwendeten URI in ein Source-Objekt zu verwandeln".

Wenn Ihre XSL also einen Import wie diesen hat

<xsl:import href="URI"/> 

Dies ermöglicht es Ihnen, URI zu nehmen und sie auf die Fuente Ihrer Wahl - vielleicht stammt er aus einer Datenbank, oder Sie wollen den URI auf einen anderen URI abbilden. Dies kann nützlich sein, da man eine xsl:variable im xsl:import href .

Hier ist ein Beispiel für Java-Code, der einen Transformator erstellt und eine Transformation durchführt.

URIResolver uriResolver = new MyURIResolver();  // sample
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setURIResolver(uriResolver);
Transformer transformer = transformerFactory.newTransformer();
transformer.setURIResolver(uriResolver);
transformer.transform(xml, result);

Es gibt zwei Stellen im Code, an denen der URIResolver verwendet wird:

  • TransformerFactory setURIResolver - "Ein Objekt setzen das standardmäßig bei der Transformation verwendet wird Transformation verwendet wird, um URIs aufzulösen, die in document(), xsl:import, oder xsl:include."
  • Transformator setURIResolver - "Setzen ein Objekt, das verwendet wird, um URIs auflöst, die in document() verwendet werden."

Question : Gibt es ein ähnliches Konzept wie den Java URIResolver in C# und .NET?

3voto

Max Toro Punkte 27760

Ja, es heißt XmlResolver .

XmlResolver ist eines der System.Xml Abstraktionen, d.h. Sie können es in verschiedenen APIs verwenden, wie z.B. XslCompiledTransform , XmlDocument , XmlReader (über XmlReaderSettings ), usw.

Hier erfahren Sie mehr darüber, wie es funktioniert und wie Sie einen eigenen Resolver implementieren .

Standardmäßig verwenden diese verschiedenen APIs die XmlUrlResolver der URIs auflösen kann, die mit http:// y file:// .

Darüber hinaus können Sie für die Auflösung externer Entitäten die Standard ResolveEntity Methode en XmlReader .

0voto

Cheeso Punkte 184210

Ja, das Analogon existiert.
IXmlNamespaceResolver und auch XmlNamespaceManager die die Schnittstelle implementiert.

@Lame Duck, ich glaube, Sie haben die Frage missverstanden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X