Xml Haskell-HXT解析条件
我正在尝试解析此xml:Xml Haskell-HXT解析条件,xml,haskell,hxt,Xml,Haskell,Hxt,我正在尝试解析此xml: ... <member> <name>id</name> <value> <string>1</string> </value> </member> <member> <name>description</name> <value> <string>sdfsdfsdf</st
...
<member>
<name>id</name>
<value>
<string>1</string>
</value>
</member>
<member>
<name>description</name>
<value>
<string>sdfsdfsdf</string>
</value>
</member>
...
。。。
身份证件
1.
描述
sdfsdfsdf
...
如何仅解析具有从属“name”-tag=“id”的“”标记
我试过:
getroot = multi ( ( getChildren >>> hasName "name" >>> hasText "id") `guards` (isElem >>> hasName "member" ) )
main = do
print <- runX (parseXML "test2.xml" >>> getroot >>> putXmlTree "-")
getroot=multi((getChildren>>>hasName“name”>>>hastxt“id”)`guards`(isElem>>>hasName“member”))
main=do
打印>>获取根>>>putXmlTree“-”)
当您使用过滤器hasName“name”
时,您会得到
标签。该节点本身不是文本节点,因此hasText“id”
失败。这里有一个似乎有效的修改:(我还必须更改hasText
的参数类型,可能是HXT的另一个版本)
我不是HXT的专家,因此可能有更好的方法来做您想做的事情。错误消息或问题是什么?没有错误消息。但是,不应解析任何描述标记(“description…”)。您可以将
getroot
写得更清楚一点,如multi$isElem>>hasName“member”hastxt(=“id”)
。
import Text.XML.HXT.Core
getroot = multi ( ( getChildren >>> hasName "name" >>> getChildren >>> hasText (=="id"))
`guards` (isElem >>> hasName "member" ) )
main = do
runX (readDocument [] "test2.xml" >>> getroot >>> putXmlTree "-")