語言

IXmlPullParser 介面

定義

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

[Android.Runtime.Register("org/xmlpull/v1/XmlPullParser", "", "Org.XmlPull.V1.IXmlPullParserInvoker")]
public interface IXmlPullParser : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("org/xmlpull/v1/XmlPullParser", "", "Org.XmlPull.V1.IXmlPullParserInvoker")>]
type IXmlPullParser = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
衍生
屬性
實作

備註

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

根據設定的特性,有以下不同類型的解析器:ul<li b nonvalidating/>b< 解析器(依據 XML 1.0 規範定義),當 FEATURE_PROCESS_DOCDECL 設為 true ><時>,li b<驗證 parser>/b<(依據 XML 1.0 規範定義),當 FEATURE_VALIDATION 為真(且這表示 FEATURE_PROCESS_DOCDECL 為真)時><,li><><>當 FEATURE_PROCESS_DOCDECL 為假(這是預設值,若需要不同值,必須在開始解析前更改),則解析器在 XML<文件中無 DOCDECL> 或 em< 的情況下,表現為符合 XML 1.0 的非驗證解析器>(內部 entite 仍可用 defineEntityReplacementText()定義)。 此運作模式 b<旨在>於受限環境</b>(如 J2ME)中運作。 </ul>

有兩個關鍵方法:next() 和 nextToken()。 next() 提供高階解析事件,nextToken() 則允許存取較低階的標記。

解析器的當前事件狀態可透過呼叫 getEventType() 方法來判斷。 起初,解析器處於START_DOCUMENT狀態。

next() 方法會將解析器推進到下一個事件。 從 next 回傳的整數值決定當前的解析器狀態,與後續呼叫 getEventType () 回傳的值相同。

next()<dl><dt>START_TAG<dd> 會看到以下事件類型。讀取了一個 XML 起始標籤。 <dt>TEXT<dd> 文字內容已讀取;文字內容可使用 getText() 方法檢索。 (在驗證模式下,next() 不會報告可忽略的空白,請<使用 nextToken()dt END_TAG dd 讀取結束標籤 dt>END_DOCUMENT<dd> 無更多事件可用 </dl ><><>

當 first(next() 或 nextToken()(或其他 next*() 方法)被命名後,使用者應用程式可透過以下方式從 XML 宣告取得 XML 版本、獨立及編碼:<ul><li><b>version</b>: getProperty(”http://xmlpull.org/v1/doc/properties.html#xmldecl-version&)若未讀取 XMLDecl,或不支援<><屬性,則回傳 String(「1.0」)或 null;li b>standalone</b>: getProperty(”http://xmlpull.org/v1/doc/properties.html#xmldecl-standalone&)若沒有獨立宣告或不支援屬性,則回傳 Boolean: null;若 standalone=“yes” 則回傳 Boolean(true),當 standalone=“no” <><則回傳 Boolean(false) 。li b>encoding</b>: got from getInputEncoding() null;若串流有未知編碼(未在 setInputStream 設定),且未在 XMLDecl </ul 中宣告 則回傳>

使用此 API 的簡要範例如下:

import java.io.IOException;
            import java.io.StringReader;

            import org.xmlpull.v1.XmlPullParser;
            import org.xmlpull.v1.<a href="XmlPullParserException.html">XmlPullParserException</a>;
            import org.xmlpull.v1.<a href="XmlPullParserFactory.html">XmlPullParserFactory</a>;

            public class SimpleXmlPullApp
            {

                public static void main (String args[])
                    throws XmlPullParserException, IOException
                {
                    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                    factory.setNamespaceAware(true);
                    XmlPullParser xpp = factory.newPullParser();

                    xpp.<a href="#setInput">setInput</a>( new StringReader ( "&lt;foo>Hello World!&lt;/foo>" ) );
                    int eventType = xpp.getEventType();
                    while (eventType != XmlPullParser.END_DOCUMENT) {
                     if(eventType == XmlPullParser.START_DOCUMENT) {
                         System.out.println("Start document");
                     } else if(eventType == XmlPullParser.START_TAG) {
                         System.out.println("Start tag "+xpp.<a href="#getName()">getName()</a>);
                     } else if(eventType == XmlPullParser.END_TAG) {
                         System.out.println("End tag "+xpp.getName());
                     } else if(eventType == XmlPullParser.TEXT) {
                         System.out.println("Text "+xpp.<a href="#getText()">getText()</a>);
                     }
                     eventType = xpp.next();
                    }
                    System.out.println("End document");
                }
            }

上述範例將產生以下輸出:

Start document
            Start tag foo
            Text Hello World!
            End tag foo
            End document

如需更多關於 API 使用的詳細資訊,請參閱可於 http://www.xmlpull.org

org.xmlpull.v1.XmlPullParserJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

欄位

名稱 Description
FeatureProcessDocdecl

此功能決定文件宣告是否被處理。

FeatureProcessNamespaces

此功能決定解析器是否處理命名空間。

FeatureReportNamespaceAttributes

此功能決定是否透過屬性存取方法暴露命名空間屬性。

FeatureValidation

若啟用此功能,所有依據 XML 1 定義的驗證錯誤。

NoNamespace

此常數代表預設命名空間(空字串 “”)

屬性

名稱 Description
AttributeCount

回傳目前起始標籤的屬性數量,若事件類型未 -1 則回傳START_TAG

ColumnNumber

回傳目前的欄位編號。 實作可以使用不同的基礎; XmlReaderPullParser 回傳一個以零為基礎的欄位編號。

Depth

回傳元件目前的深度。

EventType

回傳當前事件的類型(START_TAG、END_TAG、文字等。

Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
InputEncoding

若已知則回傳輸入編碼,否則回傳 null。

IsEmptyElementTag

如果當前事件START_TAG且標籤退化(例如 <foobar/>),則回傳為真。

IsWhitespace

檢查目前的 TEXT 事件是否僅包含空白字元。

JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
LineNumber

回傳目前的行號,從 1 開始。

Name

對於START_TAG或END_TAG事件,啟用命名空間時會回傳當前元素的(本地)名稱。

Namespace

回傳目前元素的命名空間 URI。

PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)
PositionDescription

回傳一段描述當前解析器狀態的簡短文字,包括位置、當前事件描述及資料來源(若已知)。

Prefix

回傳當前元素的前綴。

Text

將當前事件的文字內容回傳為 String。

Types

此陣列可用來將事件型別整數常數(如 START_TAG 或 TEXT)轉換為字串。

方法

名稱 Description
DefineEntityReplacementText(String, String)

據 XML 1.0 第 4.5 節「內部實體替換文字的建構」所定義,設定實體替換文字的新值。

Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
GetAttributeName(Int32)

若啟用命名空間,則回傳指定屬性的本地名稱;若停用命名空間,則回傳屬性名稱。

GetAttributeNamespace(Int32)

回傳具有指定索引(從 0 開始)的屬性命名空間 URI。

GetAttributePrefix(Int32)

回傳指定屬性的前綴;若元素沒有前綴則回傳 null。

GetAttributeType(Int32)

回傳指定屬性的型別。若解析器未驗證,必須回傳 CDATA。

GetAttributeValue(Int32)

回傳給定屬性的值。

GetAttributeValue(String, String)

回傳由命名空間 URI 與命名空間 localName 所識別的屬性值。

GetFeature(String)

回傳該功能目前的值。

GetNamespace(String)

回傳對應給定前綴的 URI,視解析器當前狀態而定。

GetNamespaceCount(Int32)

回傳命名空間堆疊中給定深度下的元素數量。

GetNamespacePrefix(Int32)

回傳命名空間堆疊中給定位置的命名空間前綴。

GetNamespaceUri(Int32)

回傳命名空間堆疊中該位置的命名空間 URI。若位置超出範圍,則拋出例外。

GetProperty(String)

查詢房產的價值。

GetTextCharacters(Int32[])

回傳包含當前事件文字、起始偏移量與當前事件相關長度的緩衝區。

IsAttributeDefault(Int32)

若指定屬性未在輸入中,則以 XML 宣告回傳。

Next()

取得下一個解析事件——元素內容將被合併,且整個元素內容只需回傳一個 TEXT 事件(註解與處理指令將被忽略,且必須展開實體參考,若無法展開則拋出例外)。

NextTag()

呼叫 next() 並回傳事件(如果是 START_TAG,否則 END_TAG 拋出例外。

NextText()

如果目前事件是START_TAG,則下一個元素是 TEXT 則回傳元素內容;若下一個事件是 END_TAG,則回傳空字串,否則拋出例外。

NextToken()

此方法的運作方式與 next() 類似,但若輸入中有其他事件類型(COMMENT、CDSECT、DOCDECL、ENTITY_REF、PROCESSING_INSTRUCTION 或 IGNORABLE_WHITESPACE)會暴露。

Require(XmlPullParserNode, String, String)

測試當前事件是否屬於該類型,以及命名空間與名稱是否相符。

SetFeature(String, Boolean)

使用此呼叫來改變解析器的一般行為,例如命名空間處理或 doctype 宣告處理。

SetInput(Reader)

將解析器的輸入來源設為指定的讀取器,然後重置解析器。

SetInput(Stream, String)

設定解析器要處理的輸入串流。

SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference

(繼承來源 IJavaPeerable)
SetProperty(String, Object)

設定房產價值。

UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

NextAsync(IXmlPullParser)

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

NextTagAsync(IXmlPullParser)

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

NextTextAsync(IXmlPullParser)

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

NextTokenAsync(IXmlPullParser)

XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於