IXmlPullParser 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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 ( "<foo>Hello World!</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 |
回傳包裹實例的 |
| 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() |
如果沒有未解決的參考資料,則 |
| 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) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
XML 拉取解析器是一個介面,定義了 XMLPULL V1 API 中所提供的解析功能(請造訪本網站以了解更多關於 API 及其實作的資訊)。 (繼承來源 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| SetProperty(String, Object) |
設定房產價值。 |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| 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) |
試著強制 |