E4x xml пустой тег удалить - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь удалить атрибуты XML, которые имеют пустые значения, использую JavaScript, необходимый для достижения E4X. Пожалуйста помоги мне с этим. Код:

function xmlparse(xml) {

var children = xml.*, attributes = xml.@*, length = children.length();
for each (var child in children) {
    if(child.hasComplexContent())
    {
        for each (var chi in child.children()) {
        var c= chi.localName()
        if(chi.hasSimpleContent())
        {
            if(chi.@value == "")
            {
                delete chi
            }   
        }
    }

    var obj = xmlparse(child)
    }
}

}

Введите:

<Test>
    <id value="123"/>
    <Book>
        <source>
            <English>
                <bookid value=""/>
                <version>
                    <type>
                        <place>
                            <author value="Test123"/>
                            <index value="10"/>
                            <display value=""/>
                        </place>
                    </type>
                </version>
            </English>
        </source>
    </Book>
    <Book>
        <source>
            <German>
                <bookid value=""/>
                <version>
                    <type>
                        <place>
                            <author value="Test143"/>
                            <index value=""/>
                            <display value="Helo"/>
                        </place>
                    </type>
                </version>
            </German>
        </source>
    </Book>
</Test>

Ожидаемый результат:

<Test>
    <id value="123"/>
    <Book>
        <source>
            <English>
                <version>
                    <type>
                        <place>
                            <author value="Test123"/>
                            <index value="10"/>
                        </place>
                    </type>
                </version>
            </English>
        </source>
    </Book>
    <Book>
        <source>
            <German>
                <version>
                    <type>
                        <place>
                            <author value="Test143"/>
                            <display value="Helo"/>
                        </place>
                    </type>
                </version>
            </German>
        </source>
    </Book>
</Test>

Как правило, мне нужно удалить значение пустого тега из XML. Пожалуйста, ознакомьте меня с этим, я попробовал с примером кода, он не работает для меня.

1 Ответ

0 голосов
/ 20 октября 2018

Поскольку вы хотите выполнить одну и ту же проверку на каждом узле xml, нет необходимости рекурсивно перебирать их. Метод потомков получит их все сразу. Проверка метода hasSimpleContent дочернего объекта гарантирует, что у него нет дочерних элементов.

function deleteEmptyElements(xml) {
    for each (var child in xml.descendants()) {
        if (child.hasSimpleContent() && child.@value.toString() == '') {
            delete child[0];
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...