C#获取XML属性

时间:2012-06-28 16:17:20

标签: c# xml

  

可能重复:
  C#: Read XML Attribute using XmlDocument

在C#中如果我要包含XMLDocument:

<Hello>
<Person:"Alan" Saying:"My name is Alan">
</Hello>

然后我如何获得单个属性“Saying”?我发现代码在单个属性包含在“&lt;&gt;”中时有效但是,如果上面有多个属性,它似乎不起作用。

任何帮助都会非常感激,我更喜欢C#新手:)

2 个答案:

答案 0 :(得分:4)

首先,这是无效的xml。我想你想要像

这样的东西
<Hello>
    <Person name="Alan" Saying="My name is Alan" />
</Hello>

和获得艾伦的说法的最简单方法是

XmlDocument doc = new XmlDocument();
doc.Load("filename.xml");
string saying = doc.SelectSingleNode("//Person[@name=Alan]").Attributes["saying"].Value;

有关其工作原理的更详细说明,请参阅XPath Examples

答案 1 :(得分:1)

您的XML应该是:

<Hello>
    <Person name="Alan" saying="My name is Alan"/>
</Hello>

您要反序列化的课程将是:

public class Hello
{
    public Person Person { get; set; }
}

public class Person
{
    [XmlAttribute]
    public string Name { get; set; }

    [XmlAttribute]
    public string Saying { get; set; }
}

如何使用它:

// Create a new XmlSerializer instance with the type of the test class
XmlSerializer SerializerObj = new XmlSerializer(typeof(Hello));

// load xml into string reader
StringReader reader = new StringReader(yourXmlString);

// Load the object saved above by using the Deserialize function
Hello LoadedObj = (Hello)SerializerObj.Deserialize(reader);

有关如何使用XmlSerializer

的详细信息,请查看MSDN文章