Minixml を使用して C で xml ファイルを解析しています。この小さな例から「check-time」、「check-key」などの値を取得したい。ファイル:
<?xml version="1.0"?>
<!--Test-->
<myfile>
<command type="start">
<instance>check-time</instance>
<instance>check-key</instance>
<instance>check-position</instance>
<action type="press button">
<blue>1</blue>
</action>
</command>
</myfile>
これが私のコードです。タグを使用してデータを抽出する方法がわかりません。助けてください。subnode->next が次のインスタンス値を表示しないのはなぜですか?
fp = fopen( "trial.xml", "r" );
if(fp == NULL){
perror("file missing");
}
mxml_node_t *tree, *Asset_elem;
tree = mxmlLoadFile(NULL, fp,MXML_TEXT_CALLBACK);
fclose(fp);
Asset_elem = mxmlWalkNext(tree, tree, MXML_DESCEND_FIRST);
if(tree != NULL){
mxml_node_t *node, *subnode, *subsubnode;
for (node = mxmlFindElement(Asset_elem, tree,
"command",
"type", "start",
MXML_DESCEND);
node != NULL;
node = mxmlFindElement(node, Asset_elem,
"command",
"type", "start",
MXML_DESCEND))
{
printf("Inside for loop\n");
printf("node name= %s\n", node->value.element.name);
if(node){
subnode = mxmlFindElement(node, tree, "instance", NULL, NULL, MXML_DESCEND);
if(subnode != NULL){
printf("subnode name= %s\n", subnode->value.element.name);
subsubnode = subnode->child;
printf("subsubnode name= %s\n", subsubnode->value.text.string);
subsubnode = subnode->next;
printf("subsubnode name= %s\n", subsubnode->value.text.string);
}
}
}