Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java解析器的概念是否存在于C#和.NET中?_C#_.net_Xslt - Fatal编程技术网

Java解析器的概念是否存在于C#和.NET中?

Java解析器的概念是否存在于C#和.NET中?,c#,.net,xslt,C#,.net,Xslt,在Java XML转换包中,有一个称为a的概念,它是“实现此接口的对象,处理器可以调用该接口,将document()、xsl:import或xsl:include中使用的URI转换为源对象。” 因此,如果您的XSL有这样的导入 <xsl:import href="URI"/> 注意,代码中有两个地方使用了URIResolver: 变压器厂 -“设定一个对象 默认情况下,在 转换以解析使用的URI 在document()中,xsl:import或 xsl:include。“ 变压

在Java XML转换包中,有一个称为a的概念,它是“实现此接口的对象,处理器可以调用该接口,将document()、xsl:import或xsl:include中使用的URI转换为源对象。”

因此,如果您的XSL有这样的导入

<xsl:import href="URI"/> 
注意,代码中有两个地方使用了URIResolver:

  • 变压器厂 -“设定一个对象 默认情况下,在 转换以解析使用的URI 在document()中,xsl:import或 xsl:include。“
  • 变压器组 一个将用于 解析文档()中使用的URI。“

问题:在C#和.NET中是否有类似于Java URIResolver的概念?

是的,模拟存在。
并且,它实现了接口

@跛脚鸭,我想你误解了这个问题

是的,它叫

XmlResolver
System.Xml
抽象之一,这意味着您可以在各种API中使用它,例如,
XmlDocument
XmlReader
(通过
XmlReaderSettings
)等

这里有一个更深入的关于它是如何工作的,以及如何实现的

默认情况下,这些不同的API使用,可以解析以
http://
file://
开头的URI


此外,对于解析外部实体,您可以覆盖
XmlReader

上的默认值,谢谢。XmlResolver是“处理包含和导入XSL样式表中的元素”所需的,我还发现要启用document()函数,我需要创建一个XsltSettings对象()。不,这与Java中的resolver类不同。这会将名称空间前缀解析为其名称空间,用于名称空间绑定。它们不会(并且在实现时不应该)检索外部实体。名称空间看起来像URL,但只是名称部分,而不是某处的实际位置。
URIResolver uriResolver = new MyURIResolver();  // sample
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setURIResolver(uriResolver);
Transformer transformer = transformerFactory.newTransformer();
transformer.setURIResolver(uriResolver);
transformer.transform(xml, result);