希望只返回我的 XML 的骨架



有没有一种快速的方法只生成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 - 是你所需要的。

我最终只使用了氧气。这对我有用吗。

相关内容

  • 没有找到相关文章

最新更新