2013-08-07 195 views
0

我有一個包含此數據的XmlElement如何獲取XmlElement中的屬性值?

<message from="[email protected]/admin" to="[email protected]/Jabber.Net" type="groupchat" id="e83Dn-53" xmlns="jabber:client"> 
    <body>:d</body> 
    <x xmlns="jabber:x:event"> 
     <offline /> 
     <delivered /> 
     <displayed /> 
     <composing /> 
    </x> 
    <delay stamp="2013-08-07T16:53:32.693Z" xmlns="urn:xmpp:delay" from="[email protected]/Spark 2.6.3" /> 
    <x stamp="20130807T16:53:32" xmlns="jabber:x:delay" from="[email protected]/Spark 2.6.3" /> 
</message> 

我想獲得的屬性值stampfromdelay元素中。我已經嘗試了幾個XPath,但我不知道如何使用它,或者我必須聲明一個名稱空間。

+0

你會考慮使用XElement(Linq to XML)嗎?然後它只是XElement.Attribute(「Key」)。值 – Jonesopolis

回答

0

改爲使用XElement。這將爲您節省大量時間和精力。

XElement xmlRoot = XElement.Load("someFile.xml"); 
XElement xmlRoot = XElement.Parse("someXmlString"); 

string stampValue = xmlRoot 
    .Element("delay") 
    .Attribute("stamp") 
    .Value; 

string fromValue = xmlRoot 
    .Element("delay") 
    .Attribute("from") 
    .Value; 

如果你有一個以上的元素使用Elements,但應該是你所需要的基本知識。

+0

我仍然無法訪問,它返回null。我想我必須設置一個命名空間或類似的東西 –

+0

@DarfZon,應該沒有理由設置一個命名空間(我甚至不知道如何反正閱讀)。打破每個語句並放置斷點。一行一行,看看問題出在哪裏。 – gunr2171

+0

@DarfZon,我的第一個猜測是你發佈的內容不是_complete_ xml,而且它被包裝在其他東西中。 – gunr2171