1

可能重复:
C#:使用 XmlDocument 读取 XML 属性

在 C# 中,如果我的 XMLDocument 包含:

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

那么我如何获得单一属性“说”呢?我发现代码在“<>”中包含单个属性时有效,但是在上面有多个属性的情况下它似乎不起作用。

任何帮助将不胜感激,我是 C# 新手 :)

4

2 回答 2

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 示例

于 2012-06-28T16:24:20.103 回答
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);

查看 MSDN 文章以获取有关如何使用XmlSerializer的更多信息

于 2012-06-28T16:27:37.140 回答