我可以使用jquery从xml树中选择一个子树吗?

时间:2009-09-25 10:00:02

标签: jquery xml parsing tree

我对jquery完全不熟悉,我正在四处寻找是否可以做到这一点。 基本上我有一个xml树结构,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<RecentTutorials>
  <Tutorial author="The Reddest">
    <Title>Silverlight and the Netflix API</Title>
    <Categories>
      <Category>Tutorials</Category>
      <Category>Silverlight 2.0</Category>
      <Category>Silverlight</Category>
      <Category>C#</Category>
      <Category>XAML</Category>
    </Categories>
    <Date>1/13/2009</Date>
  </Tutorial>
  <Mockup author="The Hairiest">
    <Title>Cake PHP 4 - Saving and Validating Data</Title>
    <Categories>
      <Category>Tutorials</Category>
      <Category>CakePHP</Category>
      <Category>PHP</Category>
    </Categories>
    <Date>1/12/2009</Date>
  </Mockup>
</RecentTutorials>

单独使用jquery,我可以选择整个模型节点/树与其余的孩子一起吗?我尝试使用.text()但没有得到任何东西。我的谷歌搜索并没有把我带到任何地方。希望你们不介意这个愚蠢的问题:)

var dom3 = parseXML(str_xml);
var strTemp = $(dom3).find("Mockup");

这样最终输出就是这样。

<Mockup author="The Hairiest">
        <Title>Cake PHP 4 - Saving and Validating Data</Title>
        <Categories>
          <Category>Tutorials</Category>
          <Category>CakePHP</Category>
          <Category>PHP</Category>
        </Categories>
        <Date>1/12/2009</Date>
      </Mockup>

谢谢!

1 个答案:

答案 0 :(得分:1)

你应该工作的,除了你不需要运行parseXML(),只需直接给jquery xml字符串:

var strTemp = $(str_xml).find("Mockup");

我认为没有办法让原始字符串输出,但如果你想要字符串,这里有一个hack:你需要用标签包装生成的dom(任何,只要它不重复“Mockup “):

var xmlString = $('<wrapper>').append(strTemp ).html();//strTemp  from above

生成

firebug_prompt> $('<wrapper>').append($('<root><ch>test</ch><ch>test2</ch></root>')).html()
<root><ch>test</ch><ch>test2</ch></root>