2

AJAXを介してXMLとしてPOSTデータを取得し、jQueryを使用してテキストエリアにロードしようとしていますが、いくつかの問題が発生しています。

XMLは次のようになります(問題のある要素のみを表示して、削除しました)。

<Entry>
    <Title>A <i>Title</i> with italics.</Title>
    <Abstract>An abstract, which <i>also</i> may have italics</Abstract>
</Entry>

を使用して、このXMLをjQueryオブジェクトに変換しました。$dom = $(xml)ここで、xmlは上記のXML文字列です。何らかの理由で、jQueryは.text()対について一貫性がないよう.html()です。問題はHTMLCollection(オブジェクトのロギングが示すもの)に関係していると思いますが、よくわかりません。

$dom.find('Title').text();A <i>Title</i> with italicsタイトルを「 。」に変えて、思い通りに動作します。抽象($dom.find('Abstract').text())で同じことを行うと、<i>タグが完全に削除され、結果として「An abstract, which also may have italics」になります。

苛立たしいことに、で物事を行うこと.html()も一貫していません!

$dom.find('Title').html();    #=> 'A &lt;Title&gt;, with italics'
$dom.find('Abstract').html()  #=> 'An abstract, which <i>also</i> may have...'

問題が何であるかについてのアイデアはありますか?XMLは型指定されていませんが、違いはないと思います。ありがとう!

4

1 に答える 1

2

あなたが言うhtml()ように、XML では動作せず、既知の DOM 要素であるため<title>動作します.text()。タグの名前を別の名前に変更すると、内部の HTML が<abstract>.

HTML を含むノード値を CDATA セクションで囲むことができます & use parseXML();

var xml = "<Entry><Title><![CDATA[A <i>Title</i> with italics.]]></Title><Abstract><![CDATA[An abstract, which <i>also</i> may have italics]]></Abstract></Entry>";

$dom = $($.parseXML(xml));
alert( $dom.find('Title').text() );
alert( $dom.find('Abstract').text() );
于 2013-01-23T17:54:46.710 に答える