>  기사  >  웹 프론트엔드  >  jquery_jquery에서 네임스페이스를 사용하여 XML 데이터 처리

jquery_jquery에서 네임스페이스를 사용하여 XML 데이터 처리

WBOY
WBOY원래의
2016-05-16 18:06:031022검색

그러나 불행하게도 많은 서비스에서 반환되는 데이터는 여전히 XML 형식입니다.
jquery에는 xml 등의 데이터 처리를 지원하는 기능이 내장되어 있으며 이에 대해서는 아무런 문제가 없습니다. 그러나 전제는 반환된 데이터에 네임스페이스가 없다는 것입니다. 예를 들어 다음 데이터

코드 복사 코드는 다음과 같습니다.











이러한 데이터를 처리하기 위한 jquery 코드는 대략 다음과 같습니다
코드 복사 코드는 다음과 같습니다.

var div = $("#placeholder")
// 네임스페이스 없이 xml 처리
$.get("data.xml", null, function (data) {
var Employees = $("Employee", data); //모든 Employee 노드 찾기
var ul = $("
    ")
    employees .each(function ( ) {
    $("
  • ").text($(this).attr("firstName") " " $(this).attr("lastName")). appendTo(ul); // 데이터의 각 행에 대해 새 li 태그를 생성하고 ul에 삽입합니다.
    ul.appendTo(div)
    });
    그러나 XML 데이터에 네임스페이스가 있으면 위 코드는 유효하지 않습니다. 그 이유는 jquery가 기본적으로


네임스페이스를 처리할 수 없기 때문입니다. 코드는



< d:Employee id="1" firstName="bill" lastName="gates">


🎜>



순서 이 문제를 해결하기 위해 일부 열성적인 네티즌들은 jquery.xmlns.js라는 jquery 플러그인을 작성했습니다. 관심이 있으시면 다음

http://www에서 알아보고 다운로드하실 수 있습니다. rfk.id.au/blog/entry/xmlns-selectors-jquery/

그런 다음 다음 방법을 사용하여 문제를 해결할 수 있습니다



복사 코드
코드는 다음과 같습니다.

$.xmlns["d"] = "http://tech.xizhang.com" // 네임스페이스가 있는 xml 처리 $.get("datawithnamespace.xml", null , function (data) { var Employees = $("d|Employee", data); //모든 Employee 노드 찾기var ul = $("
    "); employees.each(function () { $("
  • ").text($(this). attr("firstName") " " $(this).attr("lastName") ).appendTo(ul)
})
ul.appendTo(div)
>

XML 기술 사양의 네임스페이스는 정말 잘못된 디자인이라고 말씀드리고 싶습니다. 그것은 가져오는 것보다 더 많은 문제를 추가합니다.
이 글에 나오는 예제의 전체 코드는 다음과 같습니다
코드 복사 코드는 다음과 같습니다.

<% @ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>