0

関数を解析するコードを作成しましたが、引数(名前、タイプ)を解析しません。マイコード:

xml_node GCC_XML = doc.child("GCC_XML");

{


for (xml_node Function = GCC_XML.child("Function");Function; Function= Function.next_sibling("Function"))
{    
    cout<<"Function\n"<<"id= "<<Function.attribute("id").value()<<" , name= "<<Function.attribute("name").value()<<" ,returns: "<<Function.attribute("returns").value()<<Function.child_value("Argument") <<endl;

}

}

それは私が解析しようとしているXMLファイルです

<?xml version="1.0"?>
<GCC_XML>
  <Namespace id="_1" name="::" members="_2 _3 _4 "/>
  <Function id="_2" name="main" returns="_5" context="_1" location="f0:8"/>
  <Function id="_3" name="a_function" returns="_5" context="_1" location="f0:4">
    <Argument name="f" type="_6"/>
    <Argument name="e" type="_4"/>
  </Function>
  <Struct id="_4" name="EmptyClass" context="_1" location="f0:1" members="_7 _8 " bases=""/>
  <FundamentalType id="_5" name="int"/>
  <FundamentalType id="_6" name="float"/>
  <Constructor id="_7" name="EmptyClass" context="_4" location="f0:1">
    <Argument name="_ctor_arg" type="_9"/>
  </Constructor>
  <Constructor id="_8" name="EmptyClass" context="_4" location="f0:1"/>
  <ReferenceType id="_9" type="_4c"/>
  <File id="f0" name="example1.cxx"/>
</GCC_XML>

問題は、関数の引数の読み取りを拒否することです。私の結果は次のとおりです。

 Load result: No error 
Function 
id= _2 , name= main ,returns: _5
 Function 
id= _3 , name= a_function ,returns: _5

私も試しました

cout<<"Function\n"<<"id= "<<Function.attribute("id").value()<<" , name= "<<Function.attribute("name").value()<<" ,returns: "<<Function.attribute("returns").value()<<Function.attribute("Argument") <<endl;

引数出力に0の出力を追加しただけで同じ結果が得られ、それが読み取られないことを示しています。

上記と同じ結果が得られました

4

1 に答える 1

1

Argument属性ではありません。の子要素である要素ですFunction。他の要素にアクセスするのと同じ方法で、子要素にアクセスします。

xml_node::child_value指定された名前 (Argumentこの場合) を持つ XML 要素を検索し、その要素の最初の子テキスト ノードのテキストを返します。Argument、XML ファイルではです。子テキスト ノードはありません。属性ノードがありますが、それは同じではありません。の属性が必要な場合は、ノードArgumentの属性を要求したのとまったく同じように、それらを要求する必要があります。Function

于 2012-06-28T23:42:44.317 に答える