2011-10-24 10 views
2

以下のXMLの例では、タグの下にコンテンツを保持し、その後に中心を置いて他のものをすべて削除する方法をJavaパーサーを使用してですか? タグの後には、中央以外のタグが続き、そのタグは破棄する必要があります。特定のノード(Javaパーサー)を保持するXMLコンテンツを削除する

<xml> 
    <A> 
     <B> 
     . 
     . 
     . 

      <parameter> 
       <parameterid>center</parameterid> 
       <name>Center</name> 
       <keyframe> 
        <when>1</when> 
        <value> 
         <horiz>100</horiz> 
         <vert>100</vert> 
        </value> 
       </keyframe> 
       <keyframe> 
       <when>2</when> 
        <value> 
         <horiz>150</horiz> 
         <vert>150</vert> 
        </value> 
       </keyframe> 
      </parameter> 
      <parameter> 
       ... 
      </parameter> 
      <parameter> 
       ... 
      </parameter> 
     . 
     . 
     . 
     </B> 
    </A> 
</xml> 

ので、出力は次のようになります。

<parameter> 
    <parameterid>center</parameterid> 
    <name>Center</name> 
    <keyframe> 
     <when>1</when> 
     <value> 
      <horiz>100</horiz> 
      <vert>100</vert> 
     </value> 
    </keyframe> 
    <keyframe> 
    <when>2</when> 
     <value> 
      <horiz>150</horiz> 
      <vert>150</vert> 
     </value> 
    </keyframe> 
</parameter> 

お知らせください。ありがとう!

答えて

0

Java Regexpを使用して不要なコンテンツを削除し、必要な部分だけを解析することができます。

String sourceXML = readFileToString("source.xml") 
final Pattern pattern = Pattern.compile(".*(<parameter>.+</parameter>).*",Pattern.DOTALL); 
Matcher matcher = pattern.matcher(sourceXML); 
if (matcher.find()) { 
    String xmlToParse = matcher.group(0); 
    someDomOrSaxParser.parseFromString(xmlToParse) 
}else 
    System.out.println("NO MATCH"); 
0

これは、XSLTスタイルシートにとっては良い仕事です。

このスタイルシート:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="node()|@*"> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:template> 

    <xsl:template match="parameter[parameterid='center']"> 
    <xsl:copy-of select="."/> 
    </xsl:template> 

</xsl:stylesheet> 

が問題の入力に適用される、次の出力を生成します。

<parameter> 
    <parameterid>center</parameterid> 
    <name>Center</name> 
    <keyframe> 
     <when>1</when> 
     <value> 
     <horiz>100</horiz> 
     <vert>100</vert> 
     </value> 
    </keyframe> 
    <keyframe> 
     <when>2</when> 
     <value> 
     <horiz>150</horiz> 
     <vert>150</vert> 
     </value> 
    </keyframe> 
</parameter> 

あなたはJavaでXSLTを使用して上の任意の質問がある場合は、をご覧くださいthis question

+0

これは素晴らしい動作します。もう1つのこと:単語の余分を取り除きたいので、出力ファイルをもう少し微調整しなければならないので、 "name = center、frame = 1、horiz = 100、vert = 100 frame = 2 、horiz = 150、vert = 150 " –

関連する問題