使用 XDocument 的 Load 方法可快速載入 XML 文件,再透過 LINQ 查詢或操作。這裡僅簡單遍歷:一旦查詢回傳元素集合,即可用 foreach 迴圈存取每個元素。核心代碼如下:
/// <summary>
/// 使用 LINQ 讀取網路上的 XML
/// </summary>
public static void UseLINQ()
{
string sURL = "https://localhost:9058/GameServerInfo/XMLFile.XML";
XDocument oXDoc = XDocument.Load(sURL);
var query = from e in oXDoc.Descendants()
where e.NodeType == XmlNodeType.Element
select new
{
ElementName = e.Name.ToString(),
ElementValue = e.Value
};
foreach (var elementInfo in query)
{
HttpContext.Current.Response.Write(string.Format("ElementName->{0} ElementValue->{1}<br />", elementInfo.ElementName, elementInfo.ElementValue));
}
}
也可透過帶有 URL 的 XmlReader.Create 方法完成操作,它使用 XmlUrlResolver 實例偵測傳入的 URL,並開啟通往該 URL 代表之 XML 文件的資料流。為指定讀取器設定,可使用另一個 Create 多載,透過 XmlReaderSettings 實例達成。代碼如下:
/// <summary>
/// 使用 XmlReader 建構函數
/// </summary>
public static void UseXMLReader()
{
string sURL = "https://localhost:9058/GameServerInfo/XMLFile.XML";
using (XmlReader reader = XmlReader.Create(sURL))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
HttpContext.Current.Response.Write(string.Format("ElementName->{0} <br />", reader.Name));
break;
case XmlNodeType.Text:
HttpContext.Current.Response.Write(string.Format("ElementValue->{0}<br />", reader.Value));
break;
case XmlNodeType.CDATA:
HttpContext.Current.Response.Write(string.Format("ElementValue->{0}<br />", reader.Value));
break;
// other cases...
}
}
}
}