0

xerces-c-3.1.1 を使用して、xml ファイルを C++ プログラムに読み込みます。

タイプ aNode のノードを見つけました

DOMNode*       aNode;

を使用してノード名を取得できます

name=aNode->getNodeName();

しかし、私が使用しようとすると

type=aNode->getNodeType();

タイプを取得する場合、返されるタイプは整数: ELEMENT_NODE です。

ノードの名前が「nodeName」でタイプが「typeName」かどうかを判別できるコードの書き方を教えていただければ幸いです。前の部分を使用して行う方法を知っています

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

しかし、後半の方法がわかりません。

4

3 に答える 3

0

名前を XMLStr から char* に変換する必要があります

char* temp2 = XMLString::transcode(aNode->getNodeName());
std::cout << "The current node name is " << temp2 << std::endl;
于 2014-10-07T13:21:01.363 に答える
0

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

これができない場合は、XML の読み込みに使用した (DOM) パーサーを保持し、ファイルの検証時にスキーマから生成された文法にアクセスする必要があります。 .

編集:わかりました、質問のタイトルを見た後、タイプ属性またはスキーマタイプを取得したいだけなら、もっと混乱します...ただし、属性にアクセスしたい場合は、getAttributesを使用してからgetNamedItemを使用します探している属性を取得します。

于 2012-03-13T11:42:16.410 に答える
0

DOMNode::getNodeType「指定された属性を取得typeし、文字列として返す」の省略形ではありません。DOM ノードの DOM タイプを取得します。DOM ノードは、要素、テキスト、属性、処理命令、コメント、CDATA などの型付きオブジェクトです。

DOM ノードの DOM タイプは、たまたま要素ノードの属性に格納されているものとは何の関係もありません。typeこれは、通常の属性アクセス構文を使用して、自分で取得するためのものです。

于 2012-03-12T22:52:03.933 に答える