2012-01-30 22 views
1

PHPからCへの小さなコードスニペットを移植する必要があります。このスニペットは、XMLツリー内のレベルに対して任意の順序で指定できるその他の要素の値を抽出します。例えば、XML文書である:PHPでC言語でxmllib2を使用して要素の値を取得する

<book> 
    <author>John Smith</author> 
    <title>A Marvelous Book</title> 
</book> 

タイトルを抽出するコードである:Cについて

$xmlDoc = new SimpleXMLElement($xmlStr); 
$title = $xmlDoc->title; 

Iが(私は知識がないいる)のlibxml2を使用することがあります。これまでのところ私は持っています:

xmlDoc = xmlReadMemory(xmlStr, strlen(xmlStr), "noname.xml", NULL, 0); 

今何ですか?タイトルを抽出するのにXPATHを使うべきですか?過剰殺人のようだ... 助言してください。

答えて

1

だから私はやってしまったものを、タイトルを抽出する例えば、次のとおりです。

if (xpathCtx = xmlXPathNewContext(doc)) { 
    if (xpathObj = xmlXPathEvalExpression("//title[1]", xpathCtx)) { 
     if (nodes = xpathObj->nodesetval) { 
      if ((nodes->nodeNr == 1) && (nodes->nodeTab[0]->type == XML_ELEMENT_NODE)) { 
       value = xmlNodeGetContent(xpathObj->nodesetval->nodeTab[0]); 
      } 
     } 
    } 
} 

ウエッ!

関連する問題