>백엔드 개발 >XML/RSS 튜토리얼 >XML 구문 분석의 네임스페이스에 대한 사전 이해

XML 구문 분석의 네임스페이스에 대한 사전 이해

黄舟
黄舟원래의
2017-03-17 17:32:531928검색

XML 파일을 구문 분석할 때 초보자가 직면할 수 있는 가장 일반적인 문제는 아마도 XML의 네임스페이스일 것입니다. 이 기사에서는 네임스페이스에 대해 간략하게 소개하는 것을 목표로 합니다. 말할 것도 없이

네임스페이스의 의미는 C++, C# 및 기타 고급 언어와 동일합니다. XML도 파일 수가 많을 때 변수 이름이 중복되는 문제에 직면합니다. 이름을 변경하려면 네임스페이스를 사용해야 합니다. 의미는 동일하지만 의미가 다른 변수는 격리됩니다. 이 글은 네임스페이스의 파싱 방법에 초점을 맞췄습니다.

다음은 간단한 XML 파일입니다.

<root>
   <child id = ‘0’> 
      hello world 
   </child>
   <child id=&#39;1&#39;>
     one
   </child>
</root>

이 예에는 네임스페이스가 없습니다. XML을 처음 배울 때 접하게 되는 예는 다음과 같습니다. 이와 같이. 이런 종류의 예는 오해의 소지가 있습니다. 초보자는 hello world를 구문 분석한 후 동일한 프로그램을 사용하여 실제 XML 파일을 구문 분석하지만 종종 실패합니다. 다음은 DoubanAPI

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" 
xmlns:gd="http://schemas.google.com/g/2005" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">  
<id>http://api.douban.com/event/10069638</id>  
<title>Debugging the Web </title>  
<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#event.salon"/>  
<author>    
<link href="http://api.douban.com/people/1057620" rel="self"/>    
<link href="http://www.douban.com/people/aka/" rel="alternate"/>    
<link href="http://t.douban.com/icon/u1057620-16.jpg" rel="icon"/>
    name>胖胖的大头鱼</name>    
    <uri>http://api.douban.com/people/1057620</uri>
    </author>
<db:attribute name="invite_only">no</db:attribute>

에서 반환한 XML 파일입니다. www가 너무 많으면 읽기 싫고 그냥 건너뛰고, 그러면 익숙한 48fe722b397613e801e59f453d6c9330 < ;/author>가 보입니다. 위의 예에서 프로그램을 과감하게 적용했지만 실행해 보면 아무것도 나오지 않습니다. 무엇이 문제입니까? C#은 XDocument, . 어린이 신발, 진정하고 한 줄씩 살펴보자. 3b9fa87c98f5c55818a33d8f635304a4이 줄은 흥미롭지 않습니다. 여기를 보세요485b6fe25e9e87f473108949bf6b6b07noea6f540cddccdca7d953c18eb1eb3288라는 문장이 결합되어 있음을 이해할 수 있습니다. 네, db는 네임스페이스의 약어로 요소 이름 앞에 쓰기에 편리합니다. 따라서 5a37d16f53356ad61c30ba4c13522081는 e8aa4f7ce323535a9b01247c46fe6139, 02d8a117819869c76bcd3e50c8e21798와 다릅니다. 이 약어는 문서 내의 변수를 구별할 수 있지만 여전히 많은 수의 문서에는 적합하지 않으므로 네임스페이스에도 전체 이름(여기서는 http://www.douban.com/xmlns/)이 있습니다. 사실 이 풀네임으로는 어떤 내용이든 쓸 수 있다. 하지만 XML Parser의 경우에는

String

으로 취급되는데, 둘째, 광고로 사용할 수도 있다. 그래서 모두가 일반적으로 URL을 사용합니다. Parser는 파싱 시 전체 이름을 기준으로 변수를 구별하므로 두 문서에 5a37d16f53356ad61c30ba4c13522081가 있더라도 전체 이름이 다르면 문제가 없습니다. 이렇게 하면 더 명확해지겠지만 http://www.w3.org/2005/Atom이 정확히 무엇인가요? 약어조차 없습니다. 이 말을 아신다면 당신 말이 맞습니다. 그의 약어는 "", 즉 빈 문자열입니다. 이것을 기본 네임스페이스라고 하며 접두사가 없는 것처럼 보이는 것들은 이 네임스페이스 아래에 있습니다. 따라서 48fe722b397613e801e59f453d6c9330는 naked가 아니며 실제로는 328563f1bfbe16bef11ec20cd2478381이므로 Naked 프로그램은 이를 구문 분석할 수 없습니다.

그럼 어떻게 파싱할까요? 다음은 샘플 프로그램입니다. 모든 사람에게 도움이 되기를 바랍니다. 이 코드는 WP7에서 작동합니다. XmlDocument 버전도 있지만 WP7에는 이 클래스가 없어서 안타깝습니다. . .

아아아아

위 내용은 XML 구문 분석의 네임스페이스에 대한 사전 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.