2012-03-12 3 views
0

xerces-c-3.1.1を使用してxmlファイルをC++プログラムに読み込みます。xercesでXMLを読む:タイプを取得する<nodeName type = "typeName">

私はタイプ

DOMNode*  aNode; 

のノード陽極を設置していると私は種類を取得するために

type=aNode->getNodeType(); 

を使用しようとすると、しかし

name=aNode->getNodeName(); 

を使用してノード名を取得することができます、返される型は整数です:ELEMENT_NODE。

ノードが「nodeName」型で「typeName」型であるかどうかを知るためのコードの記述方法を教えていただければ幸いです。

if(wcscmp(name, L"nodeName")==0) 

を使用して前の部分を行う方法はわかっていますが、後者の方法はわかりません。

+0

char *にXMLStrから名前を変換する必要があります。 「編集」ボタンをクリックして、後で参照できるようにする方法を確認してください(また、エディタのヘルプリンクも参照してください)。 –

答えて

0

DOMNode::getNodeTypeは、「typeという名前の属性を取得し、それを文字列として返します」という略語ではありません。 DOMノードのDOM型を取得します。 DOMノードが入力されたオブジェクト:要素、テキスト、属性、処理命令、コメント、CDATAなど

DOMノードのDOMタイプはただのtype属性に格納されて何が起こるかを行うには何もを持っていません要素ノードこれは、通常の属性にアクセスする構文を使用して、あなた自身のために得ることです。

0

XMLインスタンスのスキーマの型が必要です。 XMLが既に解析されてDOMツリーとして利用可能になった後よりも、Xercesを使用してファイルを解析する際の型情報を取得する方が簡単です。これがオプションの場合は、ここをクリックしてください:get-schema-data-types-from-xercesこのリンクの答えは、Xerces SAXパーサーを使用してファイルを解析する際にスキーマタイプにアクセスする方法を説明しています。

これはオプションではない場合は、XMLをロードするために使用した(DOM)パーサーを保持し、ファイルを検証する際にスキーマから生成された文法にアクセスする必要があります。より多くの努力を終わらせる。

編集:質問のタイトルを見てから、タイプ属性またはスキーマタイプを取得したいのであればもっと混乱します...しかし、属性にアクセスするにはgetAttributes、次にgetNamedItemを探して、探している属性を取得します。

0

あなたは、私はあなたの書式設定を固定

char* temp2 = XMLString::transcode(aNode->getNodeName()); 
std::cout << "The current node name is " << temp2 << std::endl;