私はこのXMLファイルを解析しています。一度私はそれの中のノードに到達すると、私はコードのために1つの子供、descritionのための1つと、ノード参照外の1つ以上の(孫)ノードを保有しています。HXT XML検索で期待した結果が返されない
私が最初に私が望んでいたすべての情報を取得するには、単純な矢印表記と< +>集計を試みたが、それだけで大きなリストをポップし、私はおそらくこの
だから私が試した矢印を達成するために、よりエレガントな方法があったと思いました代わりの表記を行うと、線に沿ってコードを見て何かを作る:私の理解は、このフィルタが、で行く限り同じレベルにあるすべての「サービス-ID-REF」ノードを返すことになっている
import Text.XML.HXT.Core
getDocument cale = readDocument [withValidate no] cale
atName name=deep (hasName name)
text = getChildren>>>getText
getList = deep (hasName "list-info")>>>
proc x -> do
desc <- text <<< atName "desc" -< x
code <- text <<< atName "code" -< x
refs <- getAttrValue "idref" <<< deep (hasName "service-id-ref") -< x
returnA -< (desc,code,refs)
基本的には深いです"list-info"の名前を満たす最初のノードには、2つの異なるgrand-grand chiに2つの "service-id-ref"子ノードがありますldrenノードとrefは、毎回最初のものにのみバインドされます。だから基本的に私は(String、String、[String])の3タプルを期待していたが、私は3つの通常のStringsを持っていた。
私はdo not-notation(または一般的に)の矢の私の貧弱な理解のためにですか?または私は別の方法でrefsをバインドしようとする必要がありますか?それは私の答えが正しいかどうかを確認することは困難ですので、事前
ありがとう、それは....私は矢印を見つめるより多くの時間を費やす必要があります –