虚幻引擎读取三层xml数据
时间: 2023-09-20 13:06:00 浏览: 46
对于三层xml数据,可以使用嵌套的循环来遍历所有节点。以下是一个示例代码:
```cpp
#include "pugixml.hpp"
//...
// 加载xml文件
pugi::xml_document doc;
if (!doc.load_file("example.xml"))
{
UE_LOG(LogTemp, Error, TEXT("Failed to load XML file!"));
return;
}
// 获取根节点
pugi::xml_node rootNode = doc.child("root");
// 遍历第一层节点
for (pugi::xml_node node1 = rootNode.first_child(); node1; node1 = node1.next_sibling())
{
FString node1Name = UTF8_TO_TCHAR(node1.name());
// 遍历第二层节点
for (pugi::xml_node node2 = node1.first_child(); node2; node2 = node2.next_sibling())
{
FString node2Name = UTF8_TO_TCHAR(node2.name());
// 遍历第三层节点
for (pugi::xml_node node3 = node2.first_child(); node3; node3 = node3.next_sibling())
{
FString node3Name = UTF8_TO_TCHAR(node3.name());
FString node3Value = UTF8_TO_TCHAR(node3.child_value());
UE_LOG(LogTemp, Display, TEXT("Node 1: %s, Node 2: %s, Node 3 name: %s, Node 3 value: %s"), *node1Name, *node2Name, *node3Name, *node3Value);
}
}
}
```
该示例代码假设xml文件的结构如下:
```xml
<root>
<node1>
<node2>
<node3>value1</node3>
<node3>value2</node3>
<node3>value3</node3>
</node2>
<node2>
<node3>value4</node3>
<node3>value5</node3>
</node2>
</node1>
<node1>
<node2>
<node3>value6</node3>
<node3>value7</node3>
</node2>
</node1>
</root>
```
输出结果应该类似于:
```
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value1
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value2
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value3
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value4
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value5
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value6
Node 1: node1, Node 2: node2, Node 3 name: node3, Node 3 value: value7
```