XPathSelectElement可以忽略大小写吗?
本文关键字:大小写 XPathSelectElement | 更新日期: 2023-09-27 18:01:40
当我们尝试使用XPathSelectElement或任何类似于从XDocument检索属性的操作时,是否有一种方法可以忽略大小写?问这个问题的目的是,我有一些配置文件(xml),我正在编写一个通用代码,它将读取配置文件以获取XPathSelectElement所需的信息。此外,我还尝试获取属性的值。即使有人把节点/属性放在不同的情况下,我的程序应该能够正常工作。
我使用c#/。Net 3.5 .
使用XPath不能忽略大小写。不过,你可以适应。
例如-元素,假设它们只包含ASCII范围内的字母:
<>之前//* [翻译(名字(),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz") = 'myname']之前属性的工作原理相同(用@*
代替*
)。
如果不想让XPath表达式变得臃肿,可以事先将所有元素和属性名称小写,例如通过XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{translate(name(), $upper, $lower)}">
<xsl:apply-templates select="node() | @*" />
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{translate(name(), $upper, $lower)}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
在加载XML字符串之前,将其小写。这样问题就解决了。我自己也用这种方法。