1

xml ノードから内部 xml を取得する必要があります。このコードは IE で完全に動作していますが、クロムでは内部 xml を取得できません。

var result_xml = UXmlHelper.text2xml(result.d); // create xml document
    var xmlStr = $(result_xml).text();//i need to get the inner xml but in chrome it   //return the text.

IEリターンで:<NewDataSet> <Screens> <TName>Screens</TName> <AppId>1</AppId> <AppName>MyStore_1</AppName> <AppType>4</AppType> <ScreenName>ScrHome</ScreenName> <ScrId>9</ScrId> <ScrPosition>1</ScrPosition> <TemplateId>1</TemplateId> <Xml> <Screen id="ScrHome" position="1" type="Scr"> <Properties> <Id>ScrHome</Id> <Name>Home</Name> </Properties> <Style /> ......

Chromeで戻ります:

Screens1MyStore_14ScrHome911ScrHomeHomeCont_MainContainerurl(../Images/iphone-4_RealSize-2.JPG)no-repeat#DCE6F7265507Cont_InnerMainContainer8365Yellow338relativeImgScrollUpImgScrollUp../icons/UpArrow-3-Small.PNG1515scrollStartUpPhScrContImgScrollUpscrollEndImgScrollUpabsolute-7402PhScrContrtltruexxxjustTestrtl#DCE6F7hidden9986relative13ArialrtlImgScrollDownImgScroll....

私が持っているもの:

var result_xml = UXmlHelper.text2xml(result.d); $(result_xml).find('NewDataSet').find("Screens").each(function () { 
var parentScrNode = $(this).find("Xml"); 
});

ウォッチ式で:

    parentScrNode:
 e.fn.e.init[1] 0: Element 
context: Element 
length: 1 
prevObject: e.fn.e.init[1] 
selector: "Xml" proto: Object[0] –

ウォッチ 1: $(parentScrNode).html(): [例外: TypeError: 未定義のメソッド 'replace' を呼び出せません]ウォッチ 2 :

parentScrNode.html(): [Exception: TypeError: Cannot call method 'replace' of undefined] **Watch 3 :** 

parentScrNode.text(): "ScrHomeHomeCont_MainContainerurl(../Images/iphone-4_RealSize-2.JPG)......

何か案が??

どうもありがとう。

4

1 に答える 1

0

jQuery では、XML を HTML と同じように扱えるはずです。このようにして、必要なものを直接クエリできます。

例: http://jsfiddle.net/enqBg/

JS

alert($('<NewDataSet>  <Screens>    <TName>Screens</TName>    <AppId>1</AppId>    <AppName>MyStore_1</AppName>    <AppType>4</AppType>    <ScreenName>ScrHome</ScreenName>    <ScrId>9</ScrId>    <ScrPosition>1</ScrPosition>    <TemplateId>1</TemplateId>    <Xml>      <Screen id="ScrHome" position="1" type="Scr">        <Properties>          <Id>ScrHome</Id>          <Name>Home</Name>        </Properties>  </Screen>  </Xml>  </Screens>  </NewDataSet>').find('Screens').html());

編集1

NewDataSet の直接の子コンテンツが必要な場合は、すべてを別の親要素でラップする必要があります。それ以外の場合、jQuery は を返しますnull。のようなものvar YourWrappedXML = '<top><NewDataSet>...</NewDataSet></top>'$(YourWrappedXML).find('NewDataSet').html()次に、呼び出して内容を取得できますNewDataSet

例: http://jsfiddle.net/enqBg/1/

編集2

XML がページに追加される例を次に示します。

例: http://jsfiddle.net/enqBg/2/

編集3

私があなたに与えた例では、結果としてラップ<NewDataSet>...</NewDataSet>しました。これをラップすることで、find メソッドで NewDataSet を検索できるようになります。それ以外の場合、NewDataSet が最初の要素です。<top></top>'<top><NewDataSet>...</NewDataSet></top>'

ラップしない場合は、使用する必要が$(result_xml).find('Screens')あり$(result_xml)ます<NewDataSet>

例: http://jsfiddle.net/enqBg/3/

result_xmlまた、文字列なのかオブジェクトなのかわかりません。私の知る限り、これは文字列でのみ機能します (ただし、間違っている可能性があります)。

于 2012-04-09T17:18:11.137 に答える