Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android應用開發之xml生成 xml命名域與屬性

android應用開發之xml生成 xml命名域與屬性

編輯:關於Android編程

項目需要生成xml,樣式較為復雜,幾經曲折終於搞定,生成xml的樣式如下:  
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>  
<root xmlns="china">  
 ... ...  
    <BodyList xmlns:sax="male" xml:name="chinese">  
        <Body>  
            <sax:xxid>中年男性</sax:xxid>  
            <name:xxname>尼大叔</name:xxname>  
        </Body>  
        <Body>  
         ... ...  
        </Body>  
    </BodyList>  
    ... ...  
</root>  

 

  看上的xml中xmlns就是屬於tag的屬性,而sax則屬於一個命名空間,這是個什麼東西呢 言而總之就是說xxid引用的是xmlns:sax的值,此處代表性別男性,而他自己可以是中年男性,也可以是小男孩,也可以是青年或老年人等 我的理解命名空間 類似與java的包的概念   實現代碼如下  
項目需要生成xml,樣式較為復雜,幾經曲折終於搞定,生成xml的樣式如下:
 
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>  
<root xmlns="china">  
 ... ...  
    <BodyList xmlns:sax="male" xml:name="chinese">  
        <Body>  
            <sax:xxid>中年男性</sax:xxid>  
            <name:xxname>尼大叔</name:xxname>  
        </Body>  
        <Body>  
         ... ...  
        </Body>  
    </BodyList>  
    ... ...  
</root>  


看上的xml中xmlns就是屬於tag的屬性,而sax則屬於一個命名空間,這是個什麼東西呢
言而總之就是說xxid引用的是xmlns:sax的值,此處代表性別男性,而他自己可以是中年男性,也可以是小男孩,也可以是青年或老年人等
我的理解命名空間 類似與java的包的概念

實現代碼如下
[java] 
public String createXml() {  
        XmlSerializer xmlSerializer = Xml.newSerializer();  
        StringWriter writer = new StringWriter();  
        try {  
            xmlSerializer.setOutput(writer);  
            xmlSerializer.startDocument("UTF-8", true);  
  
            /** 
             * 此處生成的是<root xmlns="china"> 
             */  
            xmlSerializer.startTag("", "root");  
            xmlSerializer.attribute("", "xmlns", "china");  
  
            // ... ...  
              
            /** 
             * 這裡會生成命名空間,命名空間和屬性從表面看最大區別就是: 
             * 聲明的時候(應該說賦值的時候),一個帶前綴,一個不帶前綴 
             */  
            xmlSerializer.setPrefix("sax", "max");  
            xmlSerializer.setPrefix("name", "chinese");  
            xmlSerializer.startTag("", "BodyList");  
              
            xmlSerializer.startTag("", "Body");  
              
            /** 
             * 對於命名空間值的運用,把starttag的namespace參數添加上去相應的即可 
             * public abstract XmlSerializer startTag (String namespace, String name)  
             */  
            xmlSerializer.startTag("sax", "xxid");  
            xmlSerializer.text("中年大叔");  
            xmlSerializer.endTag("sax", "xxid");  
              
            /** 
             * 如果此處設置前綴的話(即調用方法setPrefix)就會生成錯誤的結果 
             */  
            xmlSerializer.startTag("name", "xxname");  
            xmlSerializer.text("尼大叔"); //這個是中間的文字  
            xmlSerializer.endTag("name", "xxname");  
              
            xmlSerializer.endTag("", "Body");  
              
            xmlSerializer.endTag("", "BodyList");  
            // ... ...  
  
            // 文檔結束  
            xmlSerializer.endTag("", "root");  
            xmlSerializer.endDocument();  
        } catch (IllegalArgumentException e) {  
            e.printStackTrace();  
        } catch (IllegalStateException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        String resultString = writer.toString();  
        try {  
            if (writer != null) {  
                writer.close();  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return resultString;  
    }  





 

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved