Giving the example:
<pous>
<pou>
<interface>
...
</interface>
<body>
<FBD>
...
</FBD>
</body>
</pou>
<pou>
<interface>
...
</interface>
<body>
<SFC>
...
</SFC>
</body>
</pou>
</pous>
I know how to obtain all the "pou" using the function atTag:
atTag:: (ArrowXml a) => String -> a XmlTree XmlTree
atTag tag = deep (isElem >>> hasName tag)
But how to I extract only the "pou" with the the SFC tag? Is there a clean way to do it?
Thank you in advance!
You want to use filterA
for this example
application
= processChildren
$ getChildren -- Gets the children of "pous"
>>> filterA hasSFC
where hasSFC = hasName "pou" -- Include all "pou" elements
>>> getChildren -- that have children
>>> getChildren -- that have children
>>> hasName "SFC" -- that have a "SFC" element
main = do
runX $
readDocument [] "input.xml" >>>
application >>>
writeDocument [withIndent yes] "output.xml"