gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:58 25 4
gpt4 key购买 nike

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

每次读取操作都会获取 scxml 文档中设置的默认值,而不是读取运行时设置的最新值。但是,如果我们在 scxml 文档中记录相同值的表达式,那么它将打印更新后的值,但在 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”,而不是运行时设置的“dummy”。知道如何通过 apache commons-scxml api 读取 java 代码中节点的更新值(在本例中为“虚拟”)吗?

最佳答案

你可以这样做:

org.w3c.dom.Node xyz = (org.w3c.dom.Node) handlerFSM.getEngine().getRootContext().get("xyz");

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

据我了解, getStateMachine().getDataModel() 只会提供 XML 文件中定义的静态数据模型。

关于java - 如何在java中从Apache-commons scxml api读取数据模型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com