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}
谢谢大家对我的帮助!
最好的问候
克劳迪奥
我需要从 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}
谢谢大家对我的帮助!
最好的问候 克劳迪奥