2013-08-07 141 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