JavaScript 재귀 XML 요소 순회

ke3pup

내 의도는 재귀 적 수단을 사용하여 주어진 xml의 모든 "텍스트 노드"를 찾는 것입니다. 예를 들어 입력 xml이 다음과 같으면

    <foo>
        <bar>
            <a>1</a>
            <b>2</b>
        </bar>
    </foo>

그럼 내가 찾으려 <a>하고 <b>그 후에 나는 다른 기능에 전달합니다. 관심있는 노드를 찾는 데 사용하는 코드는 다음과 같습니다.

    xml = $.parseXML(MY_INPUT_XML);
    nodesOfInterest = [];
    var depthFirstTraversal = function ($root, callback) {
        $root.children().each(function () {
            depthFirstTraversal($(this), callback);
        });
        callback($root);
    };

    depthFirstTraversal($(xml).children(), function ($node) {
        if ($node[0].childElementCount === 0) { //if it has no children then i want to store it
            nodesOfInterest.push($node);                                                    
        }
    });

위는 대부분의 경우 예상대로 작동하지만 상위 노드에 일부 속성 또는 xsi 유형이 있으면 실패합니다. 예를 들어 아래가 내 입력 xml 인 경우 :

    <soap:Envelope
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <buyGuid>
                <Context>
                    <INFO>
                        <buyGuidRequest>
                            <Property xsi:type="PostalAddress">
                                <address>Some address</address>
                                <postcode>0000</postcode>
                            </Property>
                        </buyGuidRequest>
                    </INFO>
                </Context>
            </buyGuid>
        </soap:Body>
    </soap:Envelope>

그것은의 아이들에게 통과하지 않습니다 <buyGuidRequest>또는 <Property>! 그러나 xsi:typefrom <Property>태그를 제거하면 Property의 모든 chidlren으로 올바르게 이동하여 Address와 zipCode를 찾습니다. 왜 이런 일이 발생하고 xsi : type이 깊이 순회에 어떤 영향을 미치는지 이해하지 못합니다. 누군가이 문제에 대해 밝힐 수 있습니까? 감사

알 키스 칼로 게리스

입력 한 형식이 잘못되어 xsi 접두사를 인식하지 못하는 것 같습니다. 해당 동작은 속성을 제거 할 때 재현됩니다.

xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance"

요소에서

<비누 : 바디>

이것은 작동합니다

 <soap:Envelope
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <buyGuid>
                <Context>
                    <INFO>
                        <buyGuidRequest>
                            <Property xsi:type="PostalAddress">
                                <address>Some address</address>
                                <postcode>0000</postcode>
                            </Property>
                        </buyGuidRequest>
                    </INFO>
                </Context>
            </buyGuid>
        </soap:Body>
    </soap:Envelope>

이것은 작동하지 않습니다

 <soap:Envelope
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <buyGuid>
                <Context>
                    <INFO>
                        <buyGuidRequest>
                            <Property xsi:type="PostalAddress">
                                <address>Some address</address>
                                <postcode>0000</postcode>
                            </Property>
                        </buyGuidRequest>
                    </INFO>
                </Context>
            </buyGuid>
        </soap:Body>
    </soap:Envelope>

이것은 작동합니다

 <soap:Envelope
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <buyGuid>
                <Context>
                    <INFO>
                        <buyGuidRequest>
                            <Property>
                                <address>Some address</address>
                                <postcode>0000</postcode>
                            </Property>
                        </buyGuidRequest>
                    </INFO>
                </Context>
            </buyGuid>
        </soap:Body>
    </soap:Envelope>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

회귀 요약 출력 : 범주 순서

분류에서Dev

순서가있는 요소를 재귀 적으로 추가

분류에서Dev

재귀를 사용하여 배열에서 요소 찾기-JavaScript

분류에서Dev

xml 태그의 재귀 순회가 (하위 태그) Ref.tail의 값을 인쇄하지 않습니다.

분류에서Dev

재귀 및 이항 트리 순회

분류에서Dev

BST의 재귀 대 반복 순회

분류에서Dev

Java에서 DocumentTraversal을 사용하여 XML 요소를 재귀 적으로 탐색

분류에서Dev

XSLT를 사용하여 빈 xml 요소를 재귀 적으로 제거

분류에서Dev

XPath를 사용하여 XML에서 재귀 요소를 검색하는 방법

분류에서Dev

3도 트리의 재귀 및 비 재귀 순회

분류에서Dev

XML 요소 재정의

분류에서Dev

예상보다 많은 것을 반환하는 JavaScript 요소 순회

분류에서Dev

R의 재귀 ARIMA 회귀

분류에서Dev

소수 재귀

분류에서Dev

Python에서 재귀를 사용한 후순 순회

분류에서Dev

이진 검색 트리의 재귀 순서 순회

분류에서Dev

JavaScript DOM 순회 순서

분류에서Dev

약속이있는 JavaScript 재귀-실행 순서 오류

분류에서Dev

XSLT XML 요소 순서 변경

분류에서Dev

JAVA의 재귀 요인 오름차순 인쇄

분류에서Dev

Prolog 재귀 순서가 중요합니까?

분류에서Dev

재사용 가능한 순회 구성 요소는 항상 gremlin에서 작동하지 않습니다.

분류에서Dev

빈 단순 요소와 빈 복합 요소의 차이점-XML

분류에서Dev

재귀없이 순회 불가능한 목록 작성

분류에서Dev

재귀에서 스택 해제 이해 (트리 순회)

분류에서Dev

PHP에서 다차원 배열의 재귀 순회

분류에서Dev

자바의 트리 순회 : 반복적 또는 재귀 적?

분류에서Dev

순회가 재귀 루프를 벗어나기 위해

분류에서Dev

비재 귀적 사전 주문 순회 방법 구현

Related 관련 기사

뜨겁다태그

보관