LINQ to XML:載入 XML 內容

以下是一段 XML 格式字串,假設此字串儲存於 XMLString 變數:

<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book>
<ISBN>978-986-6761-23-2</ISBN>
<Title language= "Chinese" >HTML5從零開始
<Title language= "English" >HTML5 BEGINNING</Title>
<Author type="auth">Sean Lu</Author>
<Author type="trans">呂高旭</Author>
<Pages>608 </Pages>
<Price>
<OPrice>500</OPrice>
<Sale>450</Sale>
</Price>
<Category>
<Main>Web程式開發</Main>
<Sub>HTML5</Sub>
</Category>
</Book>
</Books>

透過XElement類別所定義的 Parse 方法將其載入記憶體,建立包含此XML內容的XElement實體物件如下:

try
{
XElement xEle = XElement.Parse(XMLString);      
}
catch(XmlException xmlex)
{
// 錯誤訊息 xmlex.Message 
}

如果是不合法的XML格式,則 catch 區域會回傳文件結構上的錯誤。另外要從一個實體檔案載入XML,可以透過 XElement 的 Load 方法來達到這個目的,這個方法有數個多載的版本,最單純的只接受一個字串參數,列舉如下:

public static XElement Load(string uri)

參數uri參考所要載入的檔案路徑,這個方法會建立一個封裝檔案內容的 XElement 物件,例如以下的程式碼:

XElement xEle = XElement.Load("SomeXmlFile.xml");

其中新建立的XElement 物件xElement會封裝來自 SomeXmlFile.xml 這個檔案的內容,如此一來,我們就可以進一步的透過xElement操作載入的XML檔案內容。

try{
XElement xEle = XElement.Load(fileName);
}
catch(XmlException xmlEx)
{
// 錯誤訊息 xmlEx.Message
}

除了直接載入指定的檔案,還可以透過其他方式以不同的形式載入XML,以下是 XmlReader版本的方法定義:

public static XElement Load(
XmlReader reader
)

XmlReader是一種提供高效能存取,順向唯讀的XML資料流物件,如果選擇以這個版本的方法載入XML,只要建立所需的XmlReader物件即可,再將其當作參數傳入即可,例如以下的程式片段:

XmlNodeReader nodeReader = new XmlNodeReader(doc)
XElement xElement = XElement.Load(nodeReader)

這段語法以一個XmlDocument為基礎,建立一個XmlNodeReader物件,再將此物件當作參數,建立所需的XElement實體。另外一個版本意義完全相同,只是它所接受的參數是TextReader物件,以下為其定義:

public static XElement Load(
TextReader textReader
)

TextReader是一個專門用來處理文字資料的IO類別,將所要處理的XML內容字串封裝於TextReader物件,然後當作參數傳入此方法進行引用即可。

TextReader tr = new StringReader(
     "<RootEle><ChildEle></ChildEle></RootEle>");
XElement xElement = XElement.Load(tr);

這段程式碼建立了一個TextReader物件,封裝指定的XML字串,然後透過Load將這個物件的內容載入。與Parse方法相當類似,只是它所面對的是一個TextReader物件。

LINQ to XML:XDocument & XElement 簡述 
LINQ to XML:關於 LINQ to XML 
LINQ to XML:XML命名空間與元素識別名稱 
LINQ to XML:XML內容元素 
LINQ to XML:XML文件載入與輸出 
LINQ to XML:載入 XML 內容 
LINQ to XML:輸出XML文件 
LINQ to XML:列舉XML元素 
LINQ to XML:存取特定XML元素 
LINQ to XML:新增XML元素 
LINQ to XML:元素屬性 
LINQ to XML:利用LIQN萃取XML文件內容元素 
LINQ to XML:元素存取與轉換 




沒有留言: