【问题标题】:Parse an array string item as XML将数组字符串项解析为 XML
【发布时间】:2013-02-01 23:28:24
【问题描述】:

我正在尝试从数组项中解析 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]));,它会返回 String,所以在解析为 XML 之后,它应该像我在代码中构建为字符串一样工作,对吧?

【问题讨论】:

  • @Alexander:我编辑了帖子...感谢您的帮助。

标签: jquery arrays string parsexml


【解决方案1】:

好吧,我终于弄明白了……这有点尴尬,但很好,它有效。

源 txt 文件与任何代码文件一样具有换行符,因此,在尝试将字符串解析为 XML 之前,我必须对其进行迭代,删除任何“返回”和“行”,现在它可以正常工作了。所以,在 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());
});

希望它可以帮助其他人。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2017-04-04
    相关资源
    最近更新 更多