Java 配置<;设置变量>;with xpath在从xml负载提取时提供空字符串
我正在开发一项服务,将请求中发送的详细信息添加到两个不同的队列中 为此,我使用提取部分XML而不干扰有效负载。 但这是一片空白 我的输入如下所示Java 配置<;设置变量>;with xpath在从xml负载提取时提供空字符串,java,xml,xpath,mule,flow,Java,Xml,Xpath,Mule,Flow,我正在开发一项服务,将请求中发送的详细信息添加到两个不同的队列中 为此,我使用提取部分XML而不干扰有效负载。 但这是一片空白 我的输入如下所示 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://example.org/HelloService"> <soapenv:Header/> <soapenv:Body>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://example.org/HelloService">
<soapenv:Header/>
<soapenv:Body>
<AddRequest>
<Person>
<firstName>Test</firstName>
<lastName>Tesst</lastName>
<age>23</age>
</Person>
<Company>
<companyName>Test</companyName>
<state>Tesst</state>
<zip>12345</zip>
</Company>
</AddRequest>
</soapenv:Body>
</soapenv:Envelope>
知道它为什么提取空白而不是xml元素吗
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="//Person" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
如何使用XPATH从paylaod获取“Person”元素?使用以下方法:
<set-variable value="#[xpath('//Person')]" variableName="person" />
编辑:
<set-variable value="#[xpath('//Person').text]" variableName="person" />
将返回元素的文本值(如果有)。使用此选项:
<set-variable value="#[xpath('//Person')]" variableName="person" />
编辑:
<set-variable value="#[xpath('//Person').text]" variableName="person" />
将返回元素的文本值(如果有)。尝试使用XSLT转换器提取xml元素
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="//Person" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
尝试使用XSLT转换器提取xml元素
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="//Person" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
它给了我org.dom4j.tree。DefaultElement@23194cf5[要素:]。这不符合我的目的。我需要Person元素作为XML。我已经更新了答案。请现在检查它是否符合您的目的..文本添加再次导致空白。调用作用域属性:person=I see,.text
仅当元素有值时才会返回值。应该有一个转换器来将对象转换为xmlI,我甚至试过了。但是结果xml是dom4j的一个大的80行xml,而不是Person元素xml。根据example.org/HelloService/person…………它给了我org.dom4j.tree。DefaultElement@23194cf5[要素:]。这不符合我的目的。我需要Person元素作为XML。我已经更新了答案。请现在检查它是否符合您的目的..文本添加再次导致空白。调用作用域属性:person=I see,.text
仅当元素有值时才会返回值。应该有一个转换器来将对象转换为xmlI,我甚至试过了。但是结果xml是dom4j的一个大的80行xml,而不是Person元素xml。根据example.org/HelloService/person………..@user1985027,我已经尝试过XSLT,它正在工作。我想直接在mule流中尝试一些东西,而不是离开流。@user1985027我已经尝试过XSLT,它正在工作。我想直接在骡子流中尝试一些东西,而不是离开骡子流。