Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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
C++ 在非二叉树中加载xml_C++_Xml - Fatal编程技术网

C++ 在非二叉树中加载xml

C++ 在非二叉树中加载xml,c++,xml,C++,Xml,我已经创建了非二叉树,以便在其中加载xml数据,并稍后用于对话系统。我想实现对话系统,如在fallout中,每个答案都可以包含4个不同的节点和另一个答案。到目前为止,我用这些句子创建了xml <Dialogue> <Node>Hello,what do you want?</Node> <Leaf>Nothing</Leaf> <Leaf>Really?</Leaf> <Branch>

我已经创建了非二叉树,以便在其中加载xml数据,并稍后用于对话系统。我想实现对话系统,如在fallout中,每个答案都可以包含4个不同的节点和另一个答案。到目前为止,我用这些句子创建了xml

<Dialogue>
<Node>Hello,what do you want?</Node>
<Leaf>Nothing</Leaf>
<Leaf>Really?</Leaf>
    <Branch>
        <Node>Really?</Node>
        <Leaf>Yes></Leaf>
            <Branch>
                <Node>No</Node>
                <Leaf>Why not?</Leaf>
            </Branch>
    </Branch>
</Dialogue>

你好,你想要什么?
没有什么
真正地
真正地
是>
不
为什么不呢?

< C++ >树中的节点表示为父叶是子节点,在第一分支节点下面是上节点的子节点。在这种结构中,我发现在树中加载XML数据是困难的,所以你有更好的结构的想法吗?

用当前的XML结构,你会发现实现它是很难的。我建议一个选择

<Dialogue>
  <Node id="root">
    <Prompt>Hello,what do you want?</Prompt>
    <Response>
      <match>Nothing</match>
      <Branch node_id="nothing"/>
    </Response>
    : <!-- more Response nodes -->
  </Node>
  <Node id="nothing">
    <Prompt>Really?</Prompt>
    <Response>
      <match>Yes</match>
      <Branch node_id="nothing.yes"/>
    </Response>
    <Response>
      <match>Actually...</match>
      <Branch node_id="nothing.actually"/>
    </Response>
  </Node>
  <Node id="nothing.yes">
    <Prompt>Why not?</Prompt>
    : <!-- Response Nodes -->
  </Node>
  <Node id="nothing.actually">
    <Prompt>Okay, what then?</Prompt>
    : <!-- Response Nodes -->
  </Node>
</Dialogue>

你好,你想要什么?
没有什么
: 
真正地
对
事实上
为什么不呢?
: 
好吧,那怎么办?
: 
实际上,对于这种类型的数据,您需要一个映射来存储每个“节点”,其中一个节点是带有一组响应的提示(映射的关键是节点的id,您必须保证它是唯一的。根据匹配的响应,您可以在映射中找到节点并手动控制该节点,等等。可能比树更容易处理?还提供了重复使用状态的可能性……注:上面的XML非常详细,您可以修剪我的目的是简单地让大家了解我的想法


这是一个考虑我猜的选项……/p>你使用的是XML数据库?XML DOM树没有做你想要的吗?如果它确实,你可以用XPath查询!我使用TyyXML,它做得好,我只是混淆了XML结构,C++中的TyyXML如何在树中实现它,给你DOM(文档对象模型)。这已经是一棵树了。如果你不确定如何使用这棵树,那么也许你需要重新表述你的问题。