Выбрать все данные из XML - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть XML, подобный приведенному ниже образцу. Я хочу выбрать информацию из Применить и Значение независимо от значения NameValue Id. Есть идеи, как этого добиться?

<NameValueList>
        <NameValue Id="LegacyB2BRCOMM">
        <DSAttributeList /> 
        <Apply>false</Apply> 
       <Value>False</Value> 
      </NameValue>

      <NameValue Id="Persist">
      <DSAttributeList /> 
      <Apply>false</Apply> 
      <Value>False</Value> 
      </NameValue>
       ....
      </NameValueList>

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Это зависит от того, на каком языке вы это делаете, но вы должны использовать выражение xpath, подобное этому

//NameValue

, а затем выполнить итерацию по всем возвращенным элементам и получить доступ к элементам apply и value.В XQuery это будет:

for $nv in //NameValue
let $apply := $nv/Apply
let $value := $nv/Value
...
return <apply>{$apply}</apply><value>{$value}</value>

РЕДАКТИРОВАТЬ:

Поскольку вы изменили свой вопрос на C #, я бы также предложил другой вариант, чем приведенный ниже.

Вы можете использовать конструкцию LinE-to-XML XElement в C # для запроса XML

Версия XQuery на C # выше:

XElement xml = XElement.Parse(xmlString); //xmlString is where your xml string goes
IEnumerable<XElement> elements = from nv in xml.Descendants("NameValue")
                                 select new {Apply = nv.Element("Apply").Value, Value = nv.Element("Value").Value};
//Then you can iterate through
foreach(element in elements)
{
...
}
0 голосов
/ 08 апреля 2011

Вы можете сделать что-то вроде этого:

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(myXml);

XmlNode xn = xdoc.SelectSingleNode("NameValueList/NameValue[@Id='LegacyB2BRCOMM']");
string apply = xn.SelectSingleNode("Apply").InnerText;
string value = xn.SelectSingleNode("Value").InnerText;

Или перебрать все:

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(myXml);

XmlNodeList xnl = xdoc.SelectNodes("NameValueList/NameValue");
foreach (XmlNode xn in xnl)
{
    string id = xn.Attributes["Id"].Value;
    string apply = xn.SelectSingleNode("Apply").InnerText;
    string value = xn.SelectSingleNode("Value").InnerText;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...