2012-05-07 86 views
1

我有一個看起來像這樣如何在C#中讀取XML?

<ss:demo> 
<ss:Name> 
    <ss:FirstName>First</ss:FirstName> 
    <ss:SecondName>Second</ss:SecondName> 
</ss:Name> 
<ss:country code="IN">India</ss:country> 
</ss:demo> 

我怎麼能看這種使用C#的XML文件。 請幫我。這將是最簡單的閱讀方式?我試圖將它讀入一個DataSet,但它顯示出一些錯誤。

+1

什麼錯誤它顯示,和你想與你在閱讀後的XML做什麼? –

+0

你用什麼代碼來閱讀它? –

+0

我可以看到兩個XML錯誤:沒有名稱空間聲明和'IN'在'code'屬性中沒有引號。我的答案預計第二個是固定的,不管第一個是什麼。 – yamen

回答

3

LINQ to XML怎麼樣?

鑑於此:

var xml = "<ss:demo>\r\n<ss:Name>\r\n <ss:FirstName>First</ss:FirstName>\r\n <ss:SecondName>" + 
"Second</ss:SecondName>\r\n</ss:Name>\r\n<ss:country code=\"IN\">India</ss:country>\r\n</ss" + 
":demo>"; 

(請注意,我不得不換IN引號這樣"IN"

聲明一些命名空間和閱讀:

var mngr = new XmlNamespaceManager(new NameTable()); 
mngr.AddNamespace("ss", "urn:ignore"); // or proper URL 
var parserContext = new XmlParserContext(null, mngr, null, XmlSpace.None, null); 

如果從閱讀字符串如上:

var txtReader = new XmlTextReader(xml, XmlNodeType.Element, parserContext); 

如果從閱讀而不是一個文件:

var txtReader = new XmlTextReader(new FileStream(filename, FileMode.Open), XmlNodeType.Element, parserContext); 

然後負載:

var ele = XElement.Load(txtReader); 

ele包含了你所需要的一切。

+0

你的意思是** XDocument.Load **在這種情況下,對吧? (downvote不是我) – McGarnagle

+0

是的,這是一個文件,但顯示一個例子,我用了一個字符串。我已經更新以包括文件的樣子。 – yamen

6

有幾種策略可以使用C#讀取XML文檔或其中的一部分。如果您對XML文檔想要做的更具體,社區可以爲您提供更具體的指導。

這裏有一些最佳選擇:

的LINQ to XML

http://msdn.microsoft.com/en-us/library/bb387098.aspx

http://msdn.microsoft.com/en-us/library/bb387065.aspx

的XDocument(LINQ的的一部分,XML架構)

http://msdn.microsoft.com/en-us/library/bb387063.aspx

的XmlDocument

http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx

的XPath

http://msdn.microsoft.com/en-us/library/ms256471.aspx