0

我正在尝试从数组项中解析 XML 字符串并遍历其项,但无法使其工作!这让我发疯,因为如果我将该字符串定义为“字符串”,它会完美运行......有什么帮助吗?我错过了什么?!

这是作为以下方式访问的数组字符串项的内容theContent[1]

<?xml version="1.0" encoding="utf-8" ?>
<ROOT>

  <ITEM>
    <NAME>123</NAME>
  </ITEM>

  ...

</ROOT>

这是读取项目的代码:

var xmlDOM = $.parseXML(theContent[1]);
var items = $(xmlDOM).find('ROOT ITEM');
$.each(items, function (key, val) {
  alert($(val).find('NAME').text());
});

正如我所说,如果我将 XML 定义为字符串(如下所示)它可以工作,但是当从该数组项字符串中提取 xml 时它拒绝工作!?

var theContent = '<?xml version="1.0" encoding="utf-8" ?><ROOT><ITEM><NAME>123</NAME>/ITEM> ... </ROOT>';

@亚历山大

“数组”是从一个 txt 文件加载的,它是这样的:

Some text...|<?xml version="1.0" encoding="utf-8" ?><ROOT><ITEM><NAME>123</NAME>/ITEM> ... </ROOT>

我用 | 分割整个文本 char,使用第一个数组项作为文本,然后尝试将第二个数组项解析为 XML。正如我上面解释的那样,我无法读取子文本,但如果我调用alert(typeOf(theContent[1]));它,它会在解析为 XML 后返回String,它应该像我在代码中构建为字符串一样工作,对吧?

4

1 回答 1

0

好吧,我终于弄清楚了……这有点尴尬,但是很好,它有效。

源 txt 文件像任何代码文件一样具有换行符,因此,在尝试将字符串解析为 XML 之前,我必须遍历它删除任何“return”和“line”,现在它工作正常。所以,在 XML 解析之前的这段代码是这样的:

// 1st - split the string from the array by '\n'.
var theXML = theContent[1].split("\n");

// 2nd - replace any '\r' with nothing and store it in a new var (xmlString) 
//       that will later be parsed as XML.
var xmlString = "";
$.each(theXML, function (n, elem) {
  elem = elem.replace('\r', '');
  xmlString += elem;
});

// 3rd - now the new string (xmlString) as no '\r' and will be well parsed as XML.
//       the initial var (theXml) is replaced with the resulting parsed XML 
//       and items are accessible.
theXML = $.parseXML(xmlString);
var items = $(theXML).find('ROOT ITEM');
$.each(items, function (key, val) {
  alert($(val).find('NAME').text());
});

希望它可以帮助别人。

无论如何感谢您的关注亚历山大。

于 2013-02-18T02:45:31.287 回答