0

私は現在、本当に奇妙な問題に苦しんでいます。次のような XML があります。

<A>
  <B>
    <C>
      <D>
       <E attribute="foo">
         This is a value
       </E>
      </D>
    </C>
  </B>
</A>

XPath-Query を実行して結果をトラバースすると、ノード A の値として「これは値です」という値が常に取得されますが、これは正しくありません (値はノード E の値のみである必要があります)。

ここで何がうまくいかないのですか?A->childNodes と言うと、すべての childNodes を再帰的に取得し、値を上書きするようです。

どんな助けでも大歓迎です:)

4

1 に答える 1

1

$node->nodeValue のハンドラはdom_node_node_value_readext /dom/node.cで実装されています。libxml2 の xmlNodeGetContent()関数
を呼び出します。

ノードの値を読み取ります。これは、このノードが TEXT ノードの場合はこのノードによって直接運ばれるテキスト、またはこのノードの子(TEXT および ENTITY_REF)によって運ばれる値の集約文字列のいずれかです。エンティティ参照が置換されます。
つまり、DOMElement の場合、すべての子要素のすべての値を 1 つの文字列として取得します。
私が間違っていなければ、それはhttp://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-1841493061が言うことではありません...しかし、それが実装方法ですlibxml2/php で

于 2012-08-14T09:02:05.337 に答える