【问题标题】:Disecting a group of words from an XML file and storing them in an array in Javascript从 XML 文件中剖析一组单词并将它们存储在 Javascript 中的数组中
【发布时间】:2012-04-07 10:58:01
【问题描述】:

我这里有这个 XML 文件。

<?xml version="1.0" encoding="UTF-8"?> 
<xml> 

<word> 
  <threeletter>RIP</threeletter>
  <threeletter>PIE</threeletter>  
  <fourletter>PIER</fourletter>
  <fourletter>RIPE</fourletter>
  <fiveletter>SPIRE</fiveletter> 
  <sixletter>SPIDER</sixletter> 
 </word>

 <word> 
  <threeletter>SUE</threeletter> 
  <threeletter>USE</threeletter> 
  <fourletter>EMUS</fourletter>
  <fourletter>MUSE</fourletter>
  <fiveletter>SERUM</fiveletter> 
  <sixletter>RESUME</sixletter> 
 </word>
</xml>

然后,一旦页面完成加载,我将加载它们并将这些单词存储在一个名为 word 的数组中

$(document).ready(function() {

    $.ajax
    ({ 
        url: "dictionary.xml", 
        success: function( xml )
        { 
            $(xml).find("word").each(function()
            { 
            words.push($(this).text());
            }); 
        }       
    });

})

然后当我访问alert(word[0]) 的每个内容时,它会显示这个结果

RIP
PIE  
PIER
RIPE
SPIRE 
SPIDER

所以我假设 word[0] 是这样的,word[0] = "RIP PIE PIER RIPE SPIRE SPIDER "

但是当我这样做时“

var x = word[0].split(" ");
                    alert(x[0]);

它没有给我“RIP”这个词 知道为什么会这样吗?我想剖析words[0](来自xml)中的所有单词,然后拆分这些单词并将这些单词存储在一个数组中,但它似乎不知道为什么?

【问题讨论】:

  • 您没有问,但是....您在该 XML 文件中使用的架构有点多余且不是最佳的。为什么要使用元素名称来指示其值的长度?长度很容易计算,甚至可以在需要时用于元素选择(例如,“word[7] 下的所有 3 个字母单词”)。如果您可以控制 XML 数据的形状,我建议您将所有这些子元素都转换为纯文本,并用空格连接它们。 (我假设没有单词中有空格)。 &lt;root&gt;&lt;word&gt;&lt;children&gt;rip ripe pier spire...&lt;/children&gt;&lt;/word&gt;...

标签: javascript jquery xml arrays split


【解决方案1】:

可能是这样的

$.ajax({
    url: 'dictionary.xml',
    async: false,
    success: function(xml) {
        $(xml).find("word").each(function(index) {
            words[index] = [];
            $(this).children().each(function() {
                words[index].push($(this).text());

            });
        });

    },
    dataType: 'XML'
});
console.log(words[0]);
console.log(words[1]);​

【讨论】:

  • 你确定吗,因为它完美地工作,这就是我在控制台中看到的,对于 words[0] 和 words[1] ["RIP", "PIE", "PIER", " RIPE"、"SPIRE"、"SPIDER"] ["SUE"、"USE"、"EMUS"、"MUSE"、"SERUM"、"RESUME"]
  • 在success函数中做你的console.log或alerts
  • 是的。我不明白它是如何工作的,但 index 尚未声明,但为什么它工作?
  • 哦,这不是火箭科学,我编辑了我的答案,请检查
  • ajax req 默认是异步的,所以它之后的语句将独立于ajax完成执行。我做了异步:假。如果您得到答案,请考虑将其标记为已回答。
猜你喜欢
  • 2016-07-29
  • 1970-01-01
  • 2021-06-09
  • 2020-08-26
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
相关资源
最近更新 更多