[ID CC2025] Ошибка при чтении из XML

UserD

Топикстартер
20 лет на форуме
Сообщения
55
Реакции
1
Люди добрые, ПОМОГИТЕ!
Пытаюсь обработать XML
Код:
<?xml version="1.0" encoding="windows-1251"?>
<root>
<cl>
 <tm>
   <pr>
      <Q>Вопрос 1.1</Q>
  </pr>
 </tm>
</cl>
</root>
вот таким скриптом
Код:
#target indesign
function main() {
    var theFile = File.openDialog("Файл с данными", "*.*");
    if (!theFile) return;
    theFile.open("r");
    var xmlContent = theFile.read();
    theFile.close();

    try {
        var ctrlSet = new XML(xmlContent);
    } catch (e) {
        alert("Ошибка в структуре XML: " + e);
        return;
    }

    for each (var ctrlUnit in ctrlSet.cl.tm.pr) {
        var theQ = ctrlUnit.Q.toString();
        var theS = ctrlSet.cl.tm.pr.Q.toString();
    }
}

main();

Так вот: theS получает значение, а theQ - пустой.

В чем проблема: кривой код? Кривые данные? Кривой я?
 
Код:
#target indesign
function main() {
    var theFile = File.openDialog("Файл с данными", "*.*");
    if (!theFile) return;
    theFile.open("r");
    var xmlContent = theFile.read();
    theFile.close();

    try {
        var ctrlSet = new XML(xmlContent);
    } catch (e) {
        alert("Ошибка в структуре XML: " + e);
        return;
    }

    // Вариант 1: Если у вас всегда только один элемент
    var theQ = ctrlSet.cl.tm.pr.Q.toString();
    var theS = theQ; // или что вы хотели здесь получить?
    alert("Q = " + theQ);
    
    // Вариант 2: Если может быть несколько элементов pr
    for each (var prElement in ctrlSet.cl.tm.pr) {
        var theQ = prElement.Q.toString();
        alert("Q = " + theQ);
    }
    
    // Вариант 3: С явным доступом по индексу
    for (var i = 0; i < ctrlSet.cl.tm.pr.length(); i++) {
        var theQ = ctrlSet.cl.tm.pr[i].Q.toString();
        alert("Q = " + theQ);
    }
}

main();
 
pr - много, и внутри каждого от одного до нескольких Q...
Но в ступор вводит другое:
theS и theQ - практически одно и тоже, а результат для theQ отсутствует: theS - Вопрос 1.1, theQ - пустой!
не должно вроде так быть...
может что-то где-то поломалось
 
Последнее редактирование:
 
  • Спасибо
Реакции: UserD
Вроде яснее стало.
ну и еще в догонку: если Q несколько, то как найти идентификатор для каждого из них?