我有一个用例,我想掩盖我的xml,它的字段和值如下所示:
<root>
<entries>
<entry>
<key>key1</key>
<value>value1</value>
</entry>
<entry>
<key>key2</key>
<value>value2</value>
</entry>
<entry>
<key>key3</key>
<value>value3</value>
</entry>
</entries>
</root>
我想要一个可以通过提供一些配置来实现这一点的实用程序,我可以只提供需要屏蔽的字段名称。使用xpath编写完整的自定义代码,然后明确地读取需要屏蔽的字段名称,并且考虑到将来在xml中添加字段,屏蔽不是可扩展的解决方案。
如果有一些可用于此的实用程序,请告诉我。
答案 0 :(得分:0)
你应该learn xsl。这是一个非常强大的机制,允许您处理结构化的xml数据。
我不是xls的专家,但我已经为你准备了一个用xsl解决你的问题的例子。在我的示例中,您可以选择要屏蔽的键和不屏蔽的键。没有过滤它会更容易:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<root>
<entries>
<xsl:for-each select="//value">
<xsl:variable name="key" select="./parent::node()/key"/>
<entry>
<key>
<xsl:value-of select="$key"/>
</key>
<value>
<xsl:choose>
<xsl:when test="$key='key1'">###</xsl:when>
<xsl:when test="$key='key3'">###</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</value>
</entry>
</xsl:for-each>
</entries>
</root>
</xsl:template>
</xsl:stylesheet>
所以这种转变的输出将是:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<entries>
<entry>
<key>key1</key>
<value>###</value>
</entry>
<entry>
<key>key2</key>
<value>value2</value>
</entry>
<entry>
<key>key3</key>
<value>###</value>
</entry>
</entries>
</root>
要运行此功能,您需要使用xsl处理器:How do I run an XSLT file?
中测试了我的解决方案答案 1 :(得分:0)
我们开放了我们的工具Paranoid,该工具可让您屏蔽单个XML元素或单个XML文件或XML文件文件夹中的所有元素。
它还可以通过缓冲处理大型XML文件。