2016-03-07 70 views
1

我正在开发一个框架,在那里我需要从C#中给定字符串属性的行(字符串)获取属性的值。 示例:这里是XML <av:Button Name="btn_1" Width="80" Height="25" x:Uid="btn_1" av:Canvas.Left="168.1" av:Canvas.Top="95.1" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">My Button Content</av:Button>如何在.NET C#中从XML获取属性值?

当输入是名称时,它应该返回btn_1。 当输入是宽度,它应该返回80.

PS:我已经实现了这一点使用一些硬编码的单词位置,但它有时失败。 -TIA

回答

1

我会使用Linq到XML。这是非常容易使用

 String MyXml = "<av:Button Name="btn_1" Width="80" Height="25" x:Uid="btn_1" av:Canvas.Left="168.1" av:Canvas.Top="95.1" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">My Button Content</av:Button>"; 

     XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable()); 
     mngr.AddNamespace("av", "http://www.w3.org/2001/XMLSchema-instance"); 

     XmlParserContext parserContext = new XmlParserContext(null, mngr, null, XmlSpace.None); 

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

     var doc = XElement.Load(txtReader); 

     var name = doc.Attribute("Name").Value; 
     var width = doc.Attribute("Width").Value; 
+1

感谢詹姆斯, 但我无法得到X:UID,Canvas.Left等 能否请您做它咬了通用的,我的意思是处理命名空间正常。 –