0

配列アイテムから文字列を解析してそのアイテムを反復処理しようとしていますが、機能させることができません。私がその文字列を「文字列」として定義すると、それは完全に機能するので、それは私を狂わせています...何か助けはありますか?何が足りないの?

これは、次のようにアクセスされる配列文字列アイテムのコンテンツです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、1番目の配列項目をテキストとして使用し、2番目の配列項目をXMLとして解析しようとします。上で説明したように、子テキストを読み取ることはできませんが、子テキストを呼び出すalert(typeOf(theContent[1]));と返さStringれるので、XMLとして解析した後は、コードで文字列としてビルドする場合と同じように機能するはずです。

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 に答える