期待回归我的XML的骨架

时间:2014-01-15 18:16:44

标签: xml xslt xml-formatting

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

说我有这个(可能是格式错误的)XML文档......

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

我想要归还......

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

有没有快速的方法呢?计划,网站等?我的文档有几千页,所以我不能手动完成它。我想我真的只想删除标签中的所有数据,只返回文档的大纲。

4 个答案:

答案 0 :(得分:0)

当然,XSLT会做得相当简单。 (身份变换加上一个表示“文本节点不产生输出”的变换 - 你还没有弄清楚你是想要丢弃属性,还是仅仅属性内容,但是也可以轻松处理。)

或者选择一个标准的DOM或SAX示例程序来解析和重新序列化XML,并修改它以丢弃不需要的文本。可能更容易在SAX样本中进行更改。

答案 1 :(得分: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转换函数)。

答案 2 :(得分: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 - 就是您需要的全部内容。

答案 3 :(得分:0)

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