Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Вывести определенные атрибуты в XML


Автор: Telsystems 8.8.2013, 14:18
Добрый день. Ести XML :

Код

<NewDataSet>
 <OrganizationProperties>
    <OrganizationID>2147</OrganizationID>
    <FieldName>QuickPayFields</FieldName>
    <FieldValue />
    <FieldOwner>false</FieldOwner>
    <DisplayFieldValue />
  </OrganizationProperties>
  <OrganizationProperties>
    <OrganizationID>2147</OrganizationID>
    <FieldName>XMLTemplate</FieldName>
    <FieldValue>
        <billers>
            <Col1Name>Key</Col1Name>
            <Col2Name>Value</Col2Name>
            <UseCalendar>false</UseCalendar>
            <MethodsList>
                <Method Name="NewComboDictionary1" type="ComboDictionary" ReadOnly="true" DictionaryId="1125"  FilterField="@aaaaa">
                    <values>
                        <pair dic="Kagent" QF="Выбор службы"/>
                        <pair dic="Id" QF="Код службы"/>
                    </values>
                </Method>
                <Method Caption="Запрос счета" type="BillRequestBox">
                    <values>
                        <Field name="Filter" label="@aaaaa"/>
                        <Field name="FirmName" label="Выбор службы"/>
                        <Field name="FirmId" label="Код службы"/>
                        <Field name="LS" label="Лицевой счет"/>
                    </values>
                </Method>
            </MethodsList>
            <FieldsList>
                <Field label="@aaaaa" Visible="false" Value="11111"/>
                <Field label="Выбор службы" IsObligatory="true" MethodName="NewComboDictionary1"/>
                <Field label="Код службы" IsObligatory="true" ReadOnly="true"/>
                <Field label="Лицевой счет" IsObligatory="true"/>
            </FieldsList>
        </billers>
    </FieldValue>
    <FieldOwner>true</FieldOwner>
    <DisplayFieldValue>
        <span title="<billers><Col1Name>Key</Col1Name><Col2Name>Value</Col2Name><UseCalendar>false</UseCalendar><MethodsList><Method Name="NewComboDictionary1" type="ComboDictionary" ReadOnly="true" DictionaryId="1125"  FilterField="@aaaaa">
            <values>
                <pair dic="Kagent" QF="Выбор службы"/>
                <pair dic="Id" QF="Код службы"/>
            </values>
            </Method>
            <Method Caption="Запрос счета" type="BillRequestBox">
                <values>
                    <Field name="Filter" label="@aaaaa"/>
                    <Field name="FirmName" label="Выбор службы"/>
                    <Field name="FirmId" label="Код службы"/>
                    <Field name="LS" label="Лицевой счет"/>
                </values>
            </Method>
            </MethodsList>
            <FieldsList>
                <Field label="@aaaaa" Visible="false" Value="11111"/>
                <Field label="Выбор службы" IsObligatory="true" MethodName="NewComboDictionary1"/>
                <Field label="Код службы" IsObligatory="true" ReadOnly="true"/>
                <Field label="Лицевой счет" IsObligatory="true"/>
            </FieldsList>
            </billers>">
            <billers>
                <Col1N...</span></DisplayFieldValue>
  </OrganizationProperties>
</NewDataSet>



Нужно вытащить все, что находится в <MethodsList> и <FieldsList>

Тоесть эти значения

Код

<Field name="Filter" label="@aaaaa"/>
<Field name="FirmName" label="Выбор службы"/>
<Field name="FirmId" label="Код службы"/>
<Field name="LS" label="Лицевой счет"/>



и

Код

<Field label="@aaaaa" Visible="false" Value="11111"/>
<Field label="Выбор службы" IsObligatory="true" MethodName="NewComboDictionary1"/>
<Field label="Код службы" IsObligatory="true" ReadOnly="true"/>
<Field label="Лицевой счет" IsObligatory="true"/>



Сейчас я реализовываю так :

Код

XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlFile);
string tests = xml.GetElementsByTagName("OrganizationProperties")[4]["FieldValue"]["billers"]["MethodsList"].InnerXml;



Но так не правильно, знаю.

Подскажите пожалуйста как это сделать правильно?

Спасибо.

Автор: Telepyz 2.9.2013, 15:52


Код

XmlDocument xml = new XmlDocument();
xml.LoadXml(xmlFile);
XmlNodeList nodesFieldsList = xml.DocumentElement.SelectNodes("//FieldsList/Field");
XmlNodeList nodesMethodsList = xml.DocumentElement.SelectNodes("//MethodsList//Field");

foreach (XmlNode node in nodesFieldsList )
{
   //что ты там делаешь с ними
}
foreach (XmlNode node in nodesMethodsList )
{
   //что ты там делаешь с ними
}




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)