一、使用LINQ读取
使用Xdocument上的Load方法,可以快速的加载一个XML文档,然后使用LINQ对 加载XML文档进行查询或其他操作,这里仅简单偏历。所以,一旦查询一组元素有返回元素集,就可以使用一个简单的foreach循环访问每一个元素。核心代码如下:
///
<summary>
///
使用LINQ读取web上的xml
///
</summary>
public
static
void
UseLINQ()
{
string
sURL
=
"
http://localhost:9058/GameServerInfo/XMLFile.xml
"
;
XDocument oXDoc
=
XDocument.Load(sURL);
var qurey
=
from e
in
oXDoc.Descendants()
where
e.NodeType
==
XmlNodeType.Element
select
new
{
ElementName
=
e.Name.ToString(),
ElementValue
=
e.Value
};
foreach
(var elementInfo
in
qurey)
{
HttpContext.Current.Response.Write(
string
.Format(
"
ElementName->{0} ElementValue->{1}<br />
"
, elementInfo.ElementName, elementInfo.ElementValue));
}
}
二、使用XmlReader构造函数
当然还可以通过使用带有URL的XmlReader.Create方法来完成操作,它使用的是一个XmlUrlResolver类的一个实例检测传入的URL,然后打开一个通向由该URL代表的XML文档流。为了指定阅读器上的设置,可以使用另一个Create的重载,它也通过一个XmlReaderSetting实例完成这一目的。代码如下:
///
<summary>
///
使用XmlReader构造函数
///
</summary>
public
static
void
UseXmlReader()
{
string
sURL
=
"
http://localhost:9058/GameServerInfo/XMLFile.xml
"
;
using
(XmlReader read
=
XmlReader.Create(sURL))
{
while
(read.Read())
{
switch
(read.NodeType)
{
case
XmlNodeType.Element:
HttpContext.Current.Response.Write(
string
.Format(
"
ElementName->{0} <br />
"
, read.Name));
break
;
case
XmlNodeType.Text:
HttpContext.Current.Response.Write(
string
.Format(
"
ElementValue->{0}<br />
"
, read.Value));
break
;
case
XmlNodeType.CDATA:
HttpContext.Current.Response.Write(
string
.Format(
"
ElementValue->{0}<br />
"
, read.Value));
break
;
//
other
}
}
}
}
http://www.xueit.com/html/2009-08/21_4227_00.html