有没有一种快速的方法只生成xml文档的'骨架'?我不知道还能怎么说,但这里有一个例子来说明我需要的......
假设我有这个(可能格式不正确)XML 文档...
<ImATag>
<SoAmI>
*some random data...*
<OneMore>
*some more random data...*
</OneMore>
</SoAmI>
</ImATag>
我想归还这个...
<ImATag>
<SoAmI>
<OneMore>
</OneMore>
</SoAmI>
</ImATag>
有没有快速的方法?程序、网站等?我的文档有几千页,所以我不能手动浏览它。我想我真的只想删除标签中的所有数据并仅返回文档的轮廓。
当然,XSLT可以相当微不足道地做到这一点。(标识转换加上"文本节点不产生输出"的转换 - 您还没有明确表示是要丢弃属性还是仅丢弃属性内容,但这也可以轻松处理。
或者采用解析和重新序列化 XML 的标准 DOM 或 SAX 示例程序之一,并对其进行修改以丢弃不需要的文本。在 SAX 示例中进行该更改可能更容易。
您需要 XSL 处理。
以下 XSLT 将复制除text()
节点之外的所有节点:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
您还需要一个 XSLT 处理器,例如xsltproc
:
xsltproc xsl your-xml
或Java或.NET,或任何其他具有XML解析库(通常包括XSL转换函数)的框架。
使用 java 和 saxparser,处理 DefaultHandler 类并将数据写入
public void startElement(String namecpaceUri, String localName, String qName, Attributes attrs){}
public void endElement(String namecpaceUri, String localName, String qName){}
其中字符串 qName - 是你所需要的。
我最终只使用了氧气。这对我有用吗。