首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Talend tExtractXMLField

Talend tExtractXMLField
EN

Stack Overflow用户
提问于 2011-02-14 18:56:18
回答 5查看 13.6K关注 0票数 3

我在Talend中有一个任务,应该是检索一个字段并遍历它。

我最大的问题是,代码循环遍历XML字段,但返回的却是null。下面是XML的一个示例:

代码语言:javascript
复制
<?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

EN

回答 5

Stack Overflow用户

发布于 2011-09-30 15:42:42

如果要在<nome>节点上循环,循环XPath查询必须是

代码语言:javascript
复制
"/empresas/empresa/imoveis/imovel/fotos/nome"

和foto_nome XPath查询类似于

代码语言:javascript
复制
"text()"

注意:我还更正了XML中可能带来问题的一个错误(</imoveis>缺少"s")。

票数 7
EN

Stack Overflow用户

发布于 2011-11-04 19:03:19

有两种方法可以解决这个问题。一种方法是直接使用XMLinput和bluish提到的指令。

另一种方法是继续走你选择的道路。在XMLinput中,确保将Loop查询设置为"/empresas/empresa/imoveis/imovel/fotos",并且在选中Get Nodes选项的情况下传递fotos元素。fotos元素的XPath查询应该是"../fotos""."

您的extractXMLField组件看起来配置得很好。此外,我不知道tSetGlobalVar在您的设计中做了什么,但请确保它不会影响您试图传递的fotos元素。

票数 1
EN

Stack Overflow用户

发布于 2014-12-10 15:08:37

我已经做了一个测试工作,这肯定会对你有帮助。如果我没记错的话,你想要得到"fotos“标签下的所有"nome”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4991318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档