2016-07-20 12 views
0

私はこのようになりますいくつかのXML持っている:私はScalaでこのXMLをロードし、<a:updated>タグ内のすべてのテキストを削除したいScalaの特定のXMLノードのテキストをクリアしますか?

<a:feed> 
    <a:id>http://localhost:8089/</a:id> 
    <a:entry> 
     <a:id>test1</a:id> 
     <a:title/> 
     <a:summary/> 
     <a:updated>2016-07-05T13:34:37Z</a:updated> 
     <a:author> 
     <a:name/> 
     </a:author> 
     <a:link rel="edit" href="test1"/> 
     <a:category> 
    </a:entry> 
    <a:entry> 
     <a:id>test2</a:id> 
     <a:title/> 
     <a:summary/> 
     <a:updated>2016-07-05T13:34:39Z</a:updated> 
     <a:author> 
     <a:name/> 
     </a:author> 
     <a:link rel="edit" href="test2"/> 
     <a:category> 
    </a:entry> 
</a:feed> 

を。これどうやってするの? Scalaの新機能はこれを理解できません。

答えて

0

previous questionのように、RewriteRuleRuleTransformerを組み合わせて使用​​できます。特定の形式のタグが与えられた場合、それらのタグを直接パターンマッチングすることができます。

val removeText = new RewriteRule { 
    override def transform(n: Node): NodeSeq = n match { 
    case <a:updated>{_}</a:updated> => <a:updated></a:updated> 
    case _ => n 
    } 
} 

val output = new RuleTransformer(removeText).transform(xml) 

しかし、あなたの入力XMLは少し不正な形式であることに注意してください - <a:category>タグが閉じされることはありません。訂正されました。scalaに次のような交流があります。

scala> val xml= <a:feed> 
    |    <a:id>http://localhost:8089/</a:id> 
    |    <a:entry> 
    |     <a:id>test1</a:id> 
    |     <a:title/> 
    |     <a:summary/> 
    |     <a:updated>2016-07-05T13:34:37Z</a:updated> 
    |     <a:author> 
    |     <a:name/> 
    |     </a:author> 
    |     <a:link rel="edit" href="test1"/> 
    |     <a:category/> 
    |    </a:entry> 
    |    <a:entry> 
    |     <a:id>test2</a:id> 
    |     <a:title/> 
    |     <a:summary/> 
    |     <a:updated>2016-07-05T13:34:39Z</a:updated> 
    |     <a:author> 
    |     <a:name/> 
    |     </a:author> 
    |     <a:link rel="edit" href="test2"/> 
    |     <a:category/> 
    |    </a:entry> 
    |   </a:feed> 
xml: scala.xml.Elem = .. 

scala> val output = new RuleTransformer(removeText).transform(xml) 
output: Seq[scala.xml.Node] = 
     <a:feed> 
      <a:id>http://localhost:8089/</a:id> 
      <a:entry> 
       <a:id>test1</a:id> 
       <a:title/> 
       <a:summary/> 
       <a:updated></a:updated> 
       <a:author> 
       <a:name/> 
       </a:author> 
       <a:link rel="edit" href="test1"/> 
       <a:category/> 
      </a:entry> 
      <a:entry> 
       <a:id>test2</a:id> 
       <a:title/> 
       <a:summary/> 
       <a:updated></a:updated> 
       <a:author> 
       <a:name/> 
       </a:author> 
       <a:link rel="edit" href="test2"/> 
       <a:category/> 
      </a:entry> 
     </a:feed/> 
関連する問題