2015-09-07 1 views
-4

как десериализации ниже XML: нужно читать AdapterName, ConnectorIndex и ViewTypeс использованием XML десериализации в C#

<?xml version="1.0" encoding="utf-8"?> 

<MonitorConfiguration> 
<System Type="1"> </System> 
<Adapters> 
<Adapter Name="P1" ></Adapter> 
<Monitors> 
<Monitor ConnectorIndex="P1" ViewType="C1"></Monitor> 
<Monitor ConnectorIndex="P2" ViewType="C2"></Monitor> 
<Monitor ConnectorIndex="P2" ViewType="C2"></Monitor> 
<Monitor ConnectorIndex="P2" ViewType="C2"></Monitor> 

</Monitors> 
<Adapter Name="P2" ></Adapter> 
<Monitors> 
<Monitor ConnectorIndex="P4" ViewType="C3"></Monitor> 
<Monitor ConnectorIndex="P5" ViewType="C5"></Monitor> 
<Monitor ConnectorIndex="P6" ViewType="C6"></Monitor> 
<Monitor ConnectorIndex="P7" ViewType="C7"></Monitor> 
</Monitors> 
</Adapters> 
</MonitorConfiguration> 

с использованием метода десериализации

+3

Вы пытались найти множество возможностей, которые предлагают C# и .NET для чтения XML-файлов? – CodeCaster

+0

Использование Linq для XML –

+1

У вас есть downvotes, потому что вы не проявили никаких усилий, чтобы сделать это самостоятельно. Люди здесь с радостью помогут вам, если у вас возникнут проблемы с каким-то существующим кодом, но, возможно, не напишите код, чтобы соответствовать вашим требованиям. –

ответ

0

Если вам необходимо использовать сериализацию, в первую очередь вы должны имеют класс с той же структурой, что и ваш XML-файл. Таким образом, вы будете иметь класс сказать MonitorConfiguration, которые имеют списки Adapters, Moniters и так далее ...

Вы можете найти this пост полезно для базового понимания XML сериализации.

Как только у вас есть эквивалентный вам xml-тип, вы можете использовать XmlSerializer для создания объекта из вашего xml.

// De-Serializes the request into class object 
    public T DeserializeXml<T>(XmlNode xmlToDesearialized) 
    { 
     if (xmlToDesearialized == null) throw new ArgumentNullException("xmlToDesearialized"); 
     T deserializedObject = default(T); 
     XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); 

     using (StringReader stringReader = new StringReader(xmlToDesearialized.OuterXml)) 
     { 
      XmlTextReader xmlTextReader = new XmlTextReader(stringReader); 
      deserializedObject = (T)xmlSerializer.Deserialize(xmlTextReader); 
     } 
     return deserializedObject; 
    } 
0

Вы можете попробовать с этим -

var xml = new XmlDocument(); 
xml.Load(new StreamReader(xml)); 

foreach (XmlNode x1 in xml.GetElementsByTagName("Adapter")) 
{ 
    Console.WriteLine(x1.Attributes["Name"].Name + "::" + x1.Attributes["Name"].Value); 
} 

var p = xml.GetElementsByTagName("Monitors"); 
foreach (XmlNode x in p) 
{ 
    foreach (XmlElement e in x) 
    { 
     Console.WriteLine(e.Attributes["ConnectorIndex"].Name + "::" + e.Attributes["ConnectorIndex"].Value); 
     Console.WriteLine(e.Attributes["ViewType"].Name + "::" + e.Attributes["ViewType"].Value); 
    } 
} 

Но с следующий раз, попробуйте что-нибудь, прежде чем задать вопрос.

 Смежные вопросы

  • Нет связанных вопросов^_^