我在Talend中有一个任务,应该是检索一个字段并遍历它。
我最大的问题是,代码循环遍历XML字段,但返回的却是null。下面是XML的一个示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<empresas>
<empresa>
<imoveis>
<imovel>
[-- some fields -- ]
<fotos>
<nome id="" order="">photo1</nome>
<nome id="" order=""></nome>
<nome id="" order=""></nome>
<nome id="" order=""></nome>
</fotos>
</imovel>
[ -- other entries here -- ]
</imoveis>
</empresa>
</empresas>现在使用tExtractXMLField组件,我正在尝试获取"fotos“元素。下面是我在组件中拥有的内容:

我曾尝试更改XPath查询和XPath循环查询,但结果要么不遍历字段,要么在tMap的value字段中得到空值。
以下是该作业的图像:

您可以看到我已经从XML中检索到了4个条目,但是在"nome“字段中我得到的是null。一定是XPath出了什么问题,但我好像找不到问题所在:
希望有人能帮帮我。感谢说明:我在ubuntu 10.10 64位上使用talendv4.1.2
发布于 2011-09-30 15:42:42
如果要在<nome>节点上循环,循环XPath查询必须是
"/empresas/empresa/imoveis/imovel/fotos/nome"和foto_nome XPath查询类似于
"text()"注意:我还更正了XML中可能带来问题的一个错误(</imoveis>缺少"s")。
发布于 2011-11-04 19:03:19
有两种方法可以解决这个问题。一种方法是直接使用XMLinput和bluish提到的指令。
另一种方法是继续走你选择的道路。在XMLinput中,确保将Loop查询设置为"/empresas/empresa/imoveis/imovel/fotos",并且在选中Get Nodes选项的情况下传递fotos元素。fotos元素的XPath查询应该是"../fotos"或"."。
您的extractXMLField组件看起来配置得很好。此外,我不知道tSetGlobalVar在您的设计中做了什么,但请确保它不会影响您试图传递的fotos元素。
发布于 2014-12-10 15:08:37

我已经做了一个测试工作,这肯定会对你有帮助。如果我没记错的话,你想要得到"fotos“标签下的所有"nome”。
https://stackoverflow.com/questions/4991318
复制相似问题