0

有没有一种快速的方法来生成 xml 文档的“骨架”?我不知道还能怎么说,但这是我需要的一个例子......

假设我有这个(可能格式不正确)XML 文档......

<ImATag> 
     <SoAmI>
          *some random data...*
          <OneMore>
               *some more random data...*
          </OneMore>
     </SoAmI>
</ImATag>

我想退货...

<ImATag> 
     <SoAmI>
          <OneMore>
          </OneMore>
     </SoAmI>
</ImATag>

有没有快速的方法呢?程序、网站等?我的文档有几千页,所以我不能手动浏览它。我想我真的只是想删除标签中的所有数据并只返回文档的大纲。

4

4 回答 4

0

当然,XSLT 会很简单地做到这一点。(身份转换加上一个说“文本节点不产生输出”的转换——你还没有明确是要丢弃属性还是只是属性内容,但这也很容易处理。)

或者采用解析和重新序列化 XML 的标准 DOM 或 SAX 示例程序之一,并对其进行修改以丢弃不需要的文本。在 SAX 示例中进行更改可能更容易。

于 2014-01-15T18:31:12.677 回答
0

您需要 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 转换函数)的框架。

于 2014-01-15T18:31:22.487 回答
0

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

于 2014-05-16T19:11:04.120 回答
0

使用 java 和 saxparser,处理 DefaultHandler 类并将数据写入

public void startElement(String namecpaceUri, String localName, String qName, Attributes attrs){}

public void endElement(String namecpaceUri, String localName, String qName){}

其中 String qName - 就是您所需要的。

于 2014-01-15T18:35:45.440 回答