У меня возникли проблемы с разбором XML-кода XML-кода centovacast v3. Я работал с их API 2.x и разбирал его, но ответы полностью изменились, и я не могу заставить некоторых из моих существующих парсеров работать. Каждый пример, который я пробовал, я не могу правильно понять.Устранение неполадок XML
Я использую .NET 3.5 (4.0 тоже приемлемо), любые примеры были бы весьма признательны.
Пример XML документа:
<?xml version=""1.0"" encoding=""UTF-8""?>
<centovacast version=""3.0.0"" host=""0.0.0.0:2199"">
<response type=""success"">
<message>OK</message>
<data>
<row>
<id>1</id>
<parameters>
<ipaddress>127.0.0.1</ipaddress>
<port>2198</port>
<title>Local server</title>
<isrelay>1</isrelay>
<ismaster>1</ismaster>
<defaultip>0.0.0.0</defaultip>
<daemontype>RPC</daemontype>
<hostname/>
</parameters>
<status>
<memfree>101879808</memfree>
<memtotal>1073741824</memtotal>
<memavail>778653696</memavail>
<swapfree>1077501952</swapfree>
<swaptotal>1077501952</swaptotal>
<buffers>172535808</buffers>
<cpuload>0.00</cpuload>
<uptime>13372713</uptime>
<machine>Intel(R) Xeon(R) CPU E5620</machine>
<osbrief>Linux</osbrief>
<osdetails>2.6.18</osdetails>
<other>
<Processes>
<field>n</field>
<field>72</field>
</Processes>
<Kernel>
<field>s</field>
<field>Linux version 2.6.18</field>
</Kernel>
<row>
<field>f</field>
<field>0.000000</field>
</row>
<row>
<field>f</field>
<field>0.000000</field>
</row>
<row>
<field>f</field>
<field>0.000000</field>
</row>
</other>
<online>1</online>
</status>
<accounts>
<licensed>-1</licensed>
<active>1</active>
<inactive>0</inactive>
</accounts>
</row>
</data>
</response>
</centovacast>
Я попытался, используя следующий код:
var xml = XDocument.Parse(xmldata);
var query = from p in xml.Descendants("status")
select p;
foreach (var record in query)
MessageBox.Show(record.Value);
но он возвращает все данные внутри <status>
и <parameters>
в одном большом беспорядке, а затем в отдельных значениях.
Я хотел бы сериализовать/десериализовать, поскольку XML-вызов, который я делаю, возвращает выше для каждого сервера в кластере, поэтому он может быть довольно большим набором результатов, но я не придирчив, я был бы счастлив просто имея возможность получить данные в правильные переменные, чтобы я мог их использовать.
Что вам нужно от XML? И в каком формате? – MarcinJuraszek
Я хотел бы собирать данные внутри параметров и состояния, а также ID .. и я хотел бы сохранить их в собственных форматах, например isrelay будет bool, порт is int и т. Д. И т. Д. – Brad