2012-01-14 4 views
1

次のように私は、XMLファイルを持っている:XML Schema with data?どのように私はJSとそれを解析するのですか?

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
<xsd:element name="event"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="id" type="xsd:integer">55147</xsd:element> 
      <xsd:element name="opponent" type="xsd:string">Mount Pleasant</xsd:element> 
      <xsd:element name="game_date" type="xsd:string">2012-01-09</xsd:element> 
      <xsd:element name="start_time" type="xsd:string">6:00pm</xsd:element> 
      <xsd:element name="end_time" type="xsd:string"></xsd:element> 
      <xsd:element name="sport" type="xsd:string">Basketball</xsd:element> 
      <xsd:element name="level" type="xsd:string">Freshman</xsd:element> 
      <xsd:element name="gender" type="xsd:string">Boys</xsd:element> 
      <xsd:element name="year" type="xsd:string">2012</xsd:element> 
      <xsd:element name="season" type="xsd:string">Winter</xsd:element> 
      <xsd:element name="status" type="xsd:string"></xsd:element> 
      <xsd:element name="homeaway" type="xsd:string">Away</xsd:element> 
      <xsd:element name="facility"></xsd:element> 
      <xsd:element name="facility_id" type="xsd:integer"></xsd:element> 
      <xsd:element name="opponent"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="ss_id" type="xsd:integer">126</xsd:element> 
         <xsd:element name="name" type="xsd:string">Mount Pleasant</xsd:element> 
         <xsd:element name="score" type="xsd:string"></xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="location"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="ss_id" type="xsd:integer">1700</xsd:element> 
         <xsd:element name="name" type="xsd:string">Mt. Pleasant High School</xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="score"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="result" type="xsd:string"></xsd:element> 
         <xsd:element name="ours" type="xsd:string"></xsd:element> 
         <xsd:element name="theirs" type="xsd:string"></xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="league" type="xsd:string"></xsd:element> 
      <xsd:element name="type" type="xsd:string">Game</xsd:element> 
      <xsd:element name="ss_id" type="xsd:string">7504900</xsd:element> 
      <xsd:element name="transportation" type="xsd:string"></xsd:element> 
      <xsd:element name="dismissal" type="xsd:string"></xsd:element> 
      <xsd:element name="return" type="xsd:string"></xsd:element> 
      <xsd:element name="comment"> 
       <xsd:complexType> 
        <xsd:sequence> 
         <xsd:element name="school" type="xsd:string"></xsd:element> 
         <xsd:element name="conference" type="xsd:string"></xsd:element> 
        </xsd:sequence> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

私は

VAR itemListの= xml.documentElement.getElementsByTagName( "イベント")を使用しようとしています。

var game_date = itemList.getElementsByTagName( "game_date")。text;

javascriptでこれを解析して情報を取得できるようにする。私はここのタグからデータを読みたいと思います。私はデータを持つスキーマのように見えるので、データを引き出すのに問題があります。それは起こらないはずがありませんか?

+0

これは有効なXMLスキーマではありません。私は誰でもこの混乱を作り出してヒントを得ることを奨励します。 –

答えて

2

XML構造がかなり複雑であるため、私は情報を抽出するXPathを使用するようになります。少し問題が複雑になるためには、xsd接頭辞を扱う名前空間リゾルバ関数が必要です。

// Namespace resolver function 
function nsResolver(prefix) { 
    var ns = { 
    'xsd' : 'http://www.w3.org/2001/XMLSchema' 
    }; 
    return ns[prefix] || null; 
} 

抽出コード

// Get a NodeList of all "event" elements 
var eventNodeList = document.evaluate('/xsd:schema/xsd:element[@name="event"]', document, nsResolver, XPathResult.ANY_TYPE, null); 

// Iterate over events 
var currentEvent = eventNodeList.iterateNext(); 
while (currentEvent) { 
    // Get value from "game_date" element 
    var gameDate = document.evaluate('/xsd:complexType/xsd:sequence/xsd:element[@name="game_date"]/text()', currentEvent, nsResolver, XPathResult.ANY_TYPE,null).textContent 

    // Do something with the value 
    // ... 

    // Get next event element 
    currentEvent = eventNodeList.iterateNext(); 
} 
1

指定されたXMLファイルはXMLスキーマ(xsd)です。 XMLスキーマはそれ自体がXML文書ですが、スキーマに準拠していると主張するXML文書の構造、契約、許容される要素、属性、および値について記述します。

javascriptコードを調べると、たとえば、タグ名が「event」の要素を抽出しようとしますが、指定されたXMLスキーマには「xsd:element」、「xsd:sequence」などの要素があります。少し紛らわしいのは、XMLスキーマに実際に値が入っていることです。これは一般的ではありません。おそらく、これは価値を実証しようとしているのだろうか?上記のXMLスキーマの

XMLインスタンス、または文書が、この

<event> 
    <id>55147</id> 
    <opponent>Mount Pleasant</opponent> 
    .... 
</event> 
+0

このXMLファイルは、サーバーから取得するカレンダーです。私はそれを支配していない。私がする必要があるのは、それを解析することだけです。ここに保存されている値を読み取る方法はありますか?何をする必要がありますか? – IMcD23

関連する問題