繁体   English   中英

使用 jquery 从 chrome 中的 xml 节点获取内部 xml

[英]get inner xml from xml node in chrome using jquery

我需要从 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"); 
});

在观察表达式中:

    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:无法调用未定义的方法“替换”]观看 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

在我给你的例子中,我用<top></top>包装了<NewDataSet>...</NewDataSet>导致'<top><NewDataSet>...</NewDataSet></top>' 通过包装它,我们现在可以在我们的 find 方法中搜索 NewDataSet。 否则 NewDataSet 是第一个元素。

如果你不包装它,那么你将不得不使用$(result_xml).find('Screens')因为$(result_xml)<NewDataSet>

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

我也不确定result_xml是字符串还是 object。据我所知,这只适用于字符串(尽管我可能是错的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM