Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在OMNeT++;?_Xml_Omnet++ - Fatal编程技术网

Xml 如何在OMNeT++;?

Xml 如何在OMNeT++;?,xml,omnet++,Xml,Omnet++,我想在OMNeT++模拟中使用XML文件来处理数据。在阅读了手册之后,我了解了如何使用OMNeT++API读取XML文件。但是,当我尝试将某些内容写入XML文件时,这不起作用。下面的代码片段说明了我要做的事情: cXMLElement *xmlPosture; xmlPosture = par("traceFile").xmlValue(); cXMLElementList Entities = xmlPostureW->getElementsByTagName("Entity"); (*

我想在OMNeT++模拟中使用XML文件来处理数据。在阅读了手册之后,我了解了如何使用OMNeT++API读取XML文件。但是,当我尝试将某些内容写入XML文件时,这不起作用。下面的代码片段说明了我要做的事情:

cXMLElement *xmlPosture;
xmlPosture = par("traceFile").xmlValue();
cXMLElementList Entities = xmlPostureW->getElementsByTagName("Entity");
(*Entities[0]).setAttribute("X_Position", "100");
(*Entities[0]).setAttribute("Y_Position", "100");
(*Entities[0]).setAttribute("Z_Position", "100");
生成的XML文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <Entity id="0" X_Position="250" Y_Position="250" Z_Position="0" Speed="0.1">
    </Entity>
    <Entity id="1" X_Position="250" Y_Position="300" Z_Position="0" Speed="0.1">
    </Entity>
    <Entity id="2" X_Position="250" Y_Position="200" Z_Position="0" Speed="0.1">
    </Entity>
    <Entity id="3" X_Position="200" Y_Position="250" Z_Position="0" Speed="0.1">
    </Entity>
    <Entity id="4" X_Position="100" Y_Position="250" Z_Position="0" Speed="0.1">
    </Entity>
    <Entity id="5" X_Position="150" Y_Position="220" Z_Position="0" Speed="0.1">
    </Entity>
</root>


出于某种原因,我没有看到正在写入文件中的更改(请参见上面的代码片段)。我做错了什么?

问题是您实际上并没有更改文件,只是修改了XML文档的内部表示形式。实际上,您应该将其写入磁盘

如果我正确理解了问题的上下文,那么您正在尝试生成跟踪文件,稍后可以使用其他工具以XML格式进行分析。如果是这种情况,您可能应该在OMNeT++模块的
finish
方法中将XML文件写入磁盘。问题是您正在使用OMNeT++cXML*类来打开文件:这些类仅用于配置目的,因此它们是只读的(例如,请参阅)


因此,我建议您要么包含一个可以编写XML的库,要么切换到更简单的格式,如CSV或JSON(我个人使用它导出为JSON格式,但这可能不适合您)。您也可以尝试使用OMNeT++的统计框架导出数据,但它并不是专门为任意输出而设计的,例如消息日志。

我想做的是修改xml文件,就像xml示例文档中的上述属性一样。当我使用setAttribute函数时,它不起作用,这让我很困惑。有人能给我一些建议吗?不要只是说它不起作用,或者说出了什么问题-你需要明确地说明你遇到的问题以及你可以分享的关于这个问题的一切。对此很抱歉,但是代码没有错误,没有警告。只需打开文件,获取元素,设置属性。但是,当我在代码后面运行时,原始xml文件没有改变。还有什么我以前没有说过的吗?我是新来的,很抱歉坐快车。谢谢你。谢谢你的建议!调试完我的程序后,我非常同意您的看法,我只是修改了内部XML文档,而没有将其写回磁盘。此外,这个链接非常有用。