2011-07-30 46 views
1

我讀文件一樣從網絡:XML從網絡讀取和顯示內容

<?xml version='1.0' encoding='UTF-8'?> 
<eveapi version="2"> 
    <currentTime>2011-07-30 16:08:53</currentTime> 
    <result> 
    <rowset name="characters" key="characterID" columns="name,characterID,corporationName,corporationID"> 
     <row name="Conqrad Echerie" characterID="91048359" corporationName="Federal Navy Academy" corporationID="1000168" /> 
    </rowset> 
    </result> 
    <cachedUntil>2011-07-30 17:05:48</cachedUntil> 
</eveapi> 

IM還是新的XML,我看到有很多方法來讀取XML數據,是有一定的方式即時通訊想要做到這一點?我想要做的是將所有數據加載到StreamReader中?然後用get;組;稍後拉取數據?

+0

搜索或谷歌解析C#中的xml – Bitmap

回答

1

如果你想基於對象的訪問,把示例XML的文件並運行

xsd.exe my.xml 
xsd.exe my.xsd /classes 

這將創造my.cs這是類似的,你可以與XmlSerializer的使用XML對象模型:

var ser = new XmlSerializer(typeof(eveapi)); 
var obj = (eveapi)ser.Deserialize(source); 
0

如果您需要以簡單的方式使用數據,尤其是當您不熟悉XML時,請使用XmlDocument。 加載文檔:

using System.Xml; 
using System.IO; 
public class someclass { 
    void somemethod() { 
     //Initiate the XmlDocument object 
     XmlDocument xdoc; 
     //To load from file 
     xdoc.Load("SomeFolder\\SomeFile.xml"); 
     //Or to load from XmlTextReader, from a file for example 
     FileStream fs = FileStream("SomeFolder\\SomeFile.xml", FileMode.Open, FileAccess.Read); 
     XmlTextReader reader = new XmlTextReader(fs); 
     xdoc.Load(reader); 
     //In fact, you can load the stream directly 
     xdoc.Load(fs); 

     //Or, you can load from a string 
     xdoc.LoadXml(@"<rootElement> 
        <element1>value1</element1> 
        <element2>value2</element2> 
        </rootElement>"); 
    } 
} 

我個人覺得XmlDocument更容易使用用於導航的XML文件。

要有效使用它,您需要學習XPath。例如,爲了獲得第row名稱:

string name = xdoc.SelectSingleNode("/eveapi/result/rowset/row").Attribute["name"].InnerText; 

甚至更​​多的XPath:

string name = xdoc.SelectSingleNode("/eveapi/result/rowset/row/@name").InnerText; 

,你甚至可以過濾:

XmlNodeList elems = xdoc.SelectNodes("//*[@name=\"characters\"]") 

給你rowset元素。

但這是關閉的話題。