首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中从Apache-commons scxml api读取数据模型值

如何在java中从Apache-commons scxml api读取数据模型值
EN

Stack Overflow用户
提问于 2014-05-08 19:03:42
回答 1查看 599关注 0票数 1

我在java应用程序中使用了SCXML。我使用apache-commons-scxml api来实现状态机。我可以通过sxml api设置数据模型中的值,但不能在java代码中读取该值。

每次读取操作都会获取scxml文档中设置的默认值,而不是读取在运行时设置的最新值。但是,如果我们在scxml文档中记录相同值的表达式,那么它将打印更新后的值,但是在java代码中,我无法获得更新后的值。

下面是数据模型:

代码语言:javascript
复制
<datamodel><!-- Usage where the value is an XML data tree -->           
   <data id="XYZ">
      <A xmlns="">T</DevID> 
      <B xmlns="">F</Result>            
   </data>
</datamodel>

读取数据模型:

代码语言:javascript
复制
List<Data> dataTest = handlerFSM.getEngine().getStateMachine().getDatamodel().getData();
Iterator<Data> itrTest = dataTest.iterator();
while(itrTest.hasNext()){
  Data d = itrTest.next();
  if(d.getId().equals("XYZ")){
  NodeList nodeList = d.getNode().getChildNodes();
}

设置值:

代码语言:javascript
复制
nodeList.item(1).setTextContent("dummy");

读取值:

代码语言:javascript
复制
nodeList1.item(1).getTextContent();

所有的读操作都会给出值"F“,而不是在运行时设置的"dummy”。您知道如何通过apache commons-scxml api读取java代码中节点的更新值(在本例中为"dummy")吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-27 18:58:55

您可以这样做:

代码语言:javascript
复制
org.w3c.dom.Node xyz = (org.w3c.dom.Node) handlerFSM.getEngine().getRootContext().get("xyz");

xyz.getFirstChild().setTextContent("dummy");

据我所知,getStateMachine().getDataModel()只能提供在XML文件中定义的静态数据模型。

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

https://stackoverflow.com/questions/23539934

复制
相关文章

相似问题

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