wso2 - 使用 属性 从 xml 获取值

wso2 - get value from xml with property

我需要从 xml 中提取一个值并将其存储在 属性 中。

这是我的 xml:

<?xml version="1.0" encoding="UTF-8"?>
<localEntry xmlns="http://ws.apache.org/ns/synapse" key="myVersion2">1</localEntry>

我在网上找到了类似的东西:

     <property name="myProp"
               expression="get-property('registry','conf:repository/myVersion2.xml')"
               scope="default"
               type="OM"/>
     <log level="custom">
        <property name="myVersion2.localEntry" expression="$ctx:myVersion2//localEntry"/>
     </log>

但不起作用..

我有这个错误:

TID: [0] [ESB] [2015-07-03 16:27:43,495] ERROR {org.apache.axis2.transport.base.threads.NativeWorkerPool} -  Uncaught exception {org.apache.axis2.transport.base.threads.NativeWorkerPool}
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException:    ParseError at [row,col]:[1,1]
Message: Premature end of file.
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)

我需要的是获取之间的值并将其放入属性..

有人可以帮我吗?

谢谢

C

请按如下方式更改您的配置。

  <log level="custom">
        <property name="myProp.localEntry" expression="$myProp//localEntry"/>
     </log>

请尝试一下,让我们知道这是否能解决您的问题。

以上示例基本上是从配置注册表中获取数据(如果已经存在)。但是你问,如何设置属性中的值。我希望 XML 已经在您的消息上下文中....所以只需遍历 xpath 并在 属性 中介中设置值,如下所示。

<property name="myProp"
           expression="\some_element\....\localEntry"
           scope="default"
           type="String"/>

然后你可以很容易地引用这个 "myProp" 来使用 get-属性() 方法从中获取值。

我解决了这个问题!

有效!

        <property name="getSequence" expression="get-property('registry','conf:repository/myVersion2.xml')" scope="default" type="OM"/>
    <log level="custom">
        <property name="TestVersion" expression="$ctx:getSequence//localEntry"/>
    </log>

这是输出日志:

TID: [0] [ESB] [2015-07-07 18:04:44,251]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  TestVersion = 1 {org.apache.synapse.mediators.builtin.LogMediator}

谢谢大家对我的帮助!

最好的问候 克劳迪奥