jQuery XML Анализировать/Пересекать

Попробуйте этот код, который выдает исключение в случае сбоя:

def deleteRecursively(file: File): Unit = {
  if (file.isDirectory) {
    file.listFiles.foreach(deleteRecursively)
  }
  if (file.exists && !file.delete) {
    throw new Exception(s"Unable to delete ${file.getAbsolutePath}")
  }
}

Вы также можете свернуть или отобразить удаление, если хотите вернуть значение для всех удалений.

16
задан Yarin Miran 20 June 2009 в 17:30
поделиться

2 ответа

Я не понимаю, что вы пытаетесь перебрать, я думаю, что один из тегов в вашем вопросе был искажен. Вы говорите: «Я хочу зациклить каждое из элементов определенной строки». и я думаю, у вас там был тег.

В любом случае, вот несколько примеров извлечения данных из проанализированного XML-документа с помощью jQuery. В комментариях показано, что будет предупреждено.

Я думаю, что отчасти проблема заключается в том, что значения id являются родственными, а не дочерними по отношению к атрибутам. Похоже, что более последовательной структурой может быть:

<rows>
    <row id="5">
        <cell>Item1</cell>
        <attrs>
            <attr id="1">
                <type>CheckBox</type>
                <values>
                    <value>
                        <id>10</id>
                    </value>
                    <value>
                        <id>11</id>
                    </value>
                </values>
            </attr>
            <attr id="2">
                <type>CheckBox</type>
                <values>
                    <value>
                        <id>20</id>
                    </value>
                    <value>
                        <id>21</id>
                    </value>
                </values>
            </attr>
        </attrs>
    </row>
</rows>

Но если у вас нет контроля над xml, проигнорируйте это предложение. : -)

Хорошо, вот несколько примеров обхода для получения различных фрагментов данных:

Сначала давайте просто возьмем "Item1"

<script type="text/javascript">
// Item1
$.get('sample.xml', null, function (data, textStatus) {
    alert( $(data).find('rows row[id=5] cell').text());
}, 'xml');
</script>

Теперь мы получим 1 и 2:

<script type="text/javascript">
// 1
// 2
$.get('sample.xml', null, function (data, textStatus) {
    $(data).find('rows row[id=5] attrs attr > id').each( function(){
            alert($(this).text()); // 1, 2
    });
}, 'xml');
</script>

И, наконец, , позволять' s вытащите основные идентификаторы атрибутов и свяжите их со значениями:

<script type="text/javascript">
// rows row[id=5] attrs attr > id 1 has inner ids of 10,11
// rows row[id=5] attrs attr > id 2 has inner ids of 20,21
$.get('sample.xml', null, function (data, textStatus) {

        var out = ''
        $(data).find('rows row[id=5] attrs attr > id').each( function(){
                out += 'rows row[id=5] attrs attr > id ' + $(this).text();
                var innerIds = [];
                $(this).siblings('values').find('value id').each(function(){
                    innerIds.push($(this).text())
                });
                out += ' has inner Ids of ' + innerIds.join(',') + '\n';
        });
        alert(out);
    }, 'xml');
</script>
14
ответ дан 30 November 2019 в 22:50
поделиться

Это должно сработать для вас

function fillForm(id){
    var row = $(theXmlDoc).find('row#+'+ id);
    var ids = row.find( "attr > id");

    ids.each(function(i) 
    {
        alert($(this).text());
    });
}

PS. Вы можете использовать xpath либо:

var ids = document.evaluate( '//rows/row[@id='+id + ']/attr/id/text( )', theXmlDoc, null, XPathResult.ANY_TYPE, null );
1
ответ дан 30 November 2019 в 22:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: