2012-06-28 4 views
1

Можно создать дубликат:
C#: Read XML Attribute using XmlDocumentC# получение XML атрибуты

В C#, если бы я иметь XMLDocument содержащий:

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

Тогда как я мог бы получить единый атрибут «Говорить»? Я нашел код, который работает, когда один атрибут содержится в «<>», однако он не работает, если в нем указано несколько атрибутов.

Любая помощь будет высоко ценится, я скорее C# новичок :)

+8

Это не хорошо сформированный документ Xml. –

+6

Это не похоже на действительный XML для меня. –

+0

Проверьте XmlSerializer. Кроме того, эти двоеточия должны быть равными знаками. –

ответ

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

Ваш 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