void pmModeling::saveDataPointToXML(const QString& filePath, const QVector<DataPoint>& dataPointsList) { // 创建XML写入器并打开文件 QFile file(filePath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "无法打开XML文件"; return; } qDebug() << dataPointsList.size(); QXmlStreamWriter xmlWriter(&file); xmlWriter.setAutoFormatting(true); // 设置自动格式化,可选 // 写入XML头部 xmlWriter.writeStartDocument(); xmlWriter.writeStartElement("DataPoints"); xmlWriter.writeAttribute("x", dataPointsList[0].x); xmlWriter.writeAttribute("y", dataPointsList[0].y); xmlWriter.writeEndElement(); // 写入每个数据点 //for (const DataPoint& point : dataPointsList) for (int idx = 0; idx<dataPointsList.size(); ++idx) { // qDebug() << dataPointsList[idx].x << "\t"<<dataPointsList[idx].y; QString tempX = dataPointsList[idx].x; QString tempY = dataPointsList[idx].y; // qDebug() << tempX << "\t"<<tempY; // xmlWriter.writeAttribute("x", tempX); // xmlWriter.writeAttribute("y", tempY); xmlWriter.writeTextElement("Inside_diameter_of_top_of_riser", tempX); xmlWriter.writeTextElement("Inside_diameter_of_top_of_riser", tempY); } // 写入XML尾部 xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); // 关闭文件 file.close(); }
时间: 2024-04-10 09:28:21 浏览: 167
在你的代码中,我看到你尝试使用 `writeAttribute` 方法来写入 `x` 和 `y` 属性,但是实际上你应该使用 `writeTextElement` 方法来写入元素和其对应的文本值。
你可以尝试修改如下代码:
```cpp
xmlWriter.writeStartElement("DataPoints");
for (int idx = 0; idx < dataPointsList.size(); ++idx)
{
QString tempX = dataPointsList[idx].x;
QString tempY = dataPointsList[idx].y;
xmlWriter.writeStartElement("DataPoint");
xmlWriter.writeTextElement("x", tempX);
xmlWriter.writeTextElement("y", tempY);
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
```
这样会创建一个名为 "DataPoints" 的根元素,并在其中为每个数据点创建一个名为 "DataPoint" 的子元素,然后分别将 "x" 和 "y" 的值作为子元素的文本内容写入 XML 文件中。
请注意,我假设 `dataPointsList` 是一个存储了 `DataPoint` 结构体的 QVector。你可能需要根据你的实际情况进行适当的调整。
希望这可以帮助你成功将数据点写入 XML 文件。如果还有其他问题,请随时提问。
阅读全文