我需要从xml节点获取内部xml
我有这段代码可以在IE中完美地工作,但使用Chrome无法获取内部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");
});


在Watch表达式中:

    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)......

任何想法??

非常感谢。

最佳答案

在jQuery中,您应该能够像对待HTML一样对待XML。这样,您可以直接查询所需的内容。

示例: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>包裹了<top></top>,结果是'<top><NewDataSet>...</NewDataSet></top>'。通过包装它,我们现在可以在我们的find方法中搜索NewDataSet。否则,NewDataSet是第一个元素。

如果不包装,则必须使用$(result_xml).find('Screens'),因为$(result_xml)<NewDataSet>

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

另外,我不确定result_xml是字符串还是对象。据我所知,这仅适用于字符串(尽管我可能错了)。

关于javascript - 使用jQuery从Chrome中的xml节点获取内部xml,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10076392/

10-12 12:27