2

Haskell について学習しようとしていますが、次の構造を持つ XML ファイルを解析したいと考えていました。

<properties>
  <property name="a">
    <value>1</value>
  </property>
  <property name="b">
    <value>2</value>
  </property>
</properties>

wikiの例に従って、すべてのプロパティを検索できます

runX (readDocument [ withValidate no] "my.xml" 
           >>> deep (isElem >>> hasName "properties")

の値要素のみを抽出するにはどうすればよいproperty name="b"ですか?

4

2 に答える 2

3

正直なところ、これHXTは非常に複雑なライブラリです。これまでの私の理解では、矢印チェーンを使用してドキュメントを別のドキュメントに変換します。

矢印を学習したい場合、私の解決策は不正行為であることに気付くかもしれませんが、私にとってはそれでうまくいきました。 XPath( cabal install hxt-xpath) を使用して出力ドキュメントを生成するだけです。

import Text.XML.HXT.Core
import Text.XML.HXT.XPath.Arrows 

main :: IO ()
main = do
      runX $ readDocument [] "my.xml"
            >>>
            root [] [ selem "values" [getXPathTrees "/properties/property[@name=\"b\"]/value"]]
            >>>
            writeDocument [withIndent yes] "out.xml"
      return ()

降伏

<?xml version="1.0" encoding="UTF-8"?>
<values>
  <value>2</value>
</values>
于 2014-09-01T20:09:28.743 に答える