我在我的java应用程序中使用SCXML。我正在使用apache-commons-scxml api来实现状态机。我可以通过sxml api在数据模型中设置值,但无法在java代码中读取该值。
每次读取操作都会获取在scxml文档中设置的默认值,而不是读取在运行时设置的最新值。但是,如果我们在scxml doc中记录相同值的表达式,那么它将打印更新的值,但在java代码中我无法获得更新的值。
以下是数据模型:
<datamodel><!-- Usage where the value is an XML data tree -->
<data id="XYZ">
<A xmlns="">T</DevID>
<B xmlns="">F</Result>
</data>
</datamodel>
阅读数据模型:
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();
}
设定值:
nodeList.item(1).setTextContent("dummy");
阅读价值:
nodeList1.item(1).getTextContent();
所有时间读取操作都给出值“F”而不是在运行时设置的“哑”。 知道如何通过apache commons-scxml api读取java代码中节点的更新值(在本例中为“dummy”)?
答案 0 :(得分:0)
你可以这样做:
org.w3c.dom.Node xyz = (org.w3c.dom.Node) handlerFSM.getEngine().getRootContext().get("xyz");
xyz.getFirstChild().setTextContent("dummy");
据我所知,getStateMachine()。getDataModel()只会为您提供XML文件中定义的静态数据模型。