Как мне отобразить телефон в каком-то порядке?
Мой код C# работает не так, как я ожидаю. Это всего лишь отображение факса #
У меня есть xml с телефонными номерами, которые я хочу перебрать в C#, а затем отобразить телефонные номера в следующем порядке.
Домой # Сотового #, # Работа, Факс #
Вот что мне нужно сделать.
1. Если xml-документ содержит несколько телефонных номеров с Phone / @Current= "true", выберите текущую запись, в которой тип = Home (Party\Phone\Type= " HOME")
2. Если нет типа домашнего телефона, то выберите текущую запись, где type = CELL (Party\Phone\Type= " CELL")
3. Если нет типа сотового телефона, то выберите текущую запись, где type = WORK (Party\Phone\Type= " WORK")
4. Если тип рабочего телефона отсутствует, то выберите текущую запись, где type = FAX (Party\Phone\Type= " факс")
XML-документ
<?xml version="1.0" encoding="UTF-8"?> <Integration> <Party ID="1"> <Phone> <Type Word="WORK">Work</Type> <Number>218-222-2222</Number> </Phone> <Phone Current="true"> <Type Word="FAX">Fax</Type> <Number>218-777-7777</Number> </Phone> <Phone> <Type Word="HOME">Home</Type> <Number>218-333-3333</Number> </Phone> <Phone> <Type Word="CELL">Cell</Type> <Number>218-555-5555</Number> </Phone> <Phone Current="true"> <Type Word="CELL">Cell</Type> <Number>218-666-6666</Number> </Phone> <Phone Current="true"> <Type Word="HOME">Home</Type> <Number>218-300-0011</Number> </Phone> <Phone Current="true"> <Type Word="WORK">Work</Type> <Number>218-111-0000</Number> </Phone> <Phone> <Type Word="FAX">Fax</Type> <Number>218-000-9999</Number> </Phone> </Integration>
Требуемая производительность
<?xml version="1.0" encoding="UTF-8"?> <Integration> <Party ID="1"> <Phone Current="true"> <Type Word="HOME">Home</Type> <Number>218-300-0011</Number> </Phone> <Phone Current="true"> <Type Word="CELL">Cell</Type> <Number>218-666-6666</Number> </Phone> <Phone Current="true"> <Type Word="WORK">Work</Type> <Number>218-111-0000</Number> </Phone> <Phone Current="true"> <Type Word="FAX">Fax</Type> <Number>218-777-7777</Number> </Phone> </Integration>
Код C#
Boolean blnPhoneFound = false; XmlNode objxmlPhoneNode = objxmlBasePartyNode.SelectSingleNode("Phone[@Current='true']"); if (objxmlPhoneNode != null) { objCaseParty.Phone = new ConservatorService.Phone(); if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Home") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Home; blnPhoneFound = true; } else //Cell { if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Cell") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Cell; blnPhoneFound = true; } else //Work { if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Work") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Work; blnPhoneFound = true; } else //Fax { if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Fax") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Fax; blnPhoneFound = true; } } //Fax } //Work } // Cell if (blnPhoneFound) { if (objxmlPhoneNode.SelectSingleNode("Extension") != null) { string strExtension = objxmlPhoneNode.SelectSingleNode("Extension").InnerText; objCaseParty.Phone.Extention = strExtension; } if (objxmlPhoneNode.SelectSingleNode("Number") != null) { string strNumber = objxmlPhoneNode.SelectSingleNode("Number").InnerText; objCaseParty.Phone.Number = strNumber; } } } //Phone Current } } }
Что я уже пробовал:
Boolean blnPhoneFound = false; XmlNode objxmlPhoneNode = objxmlBasePartyNode.SelectSingleNode("Phone[@Current='true']"); if (objxmlPhoneNode != null) { objCaseParty.Phone = new ConservatorService.Phone(); if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Home") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Home; blnPhoneFound = true; } else //Cell { if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Cell") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Cell; blnPhoneFound = true; } else //Work { if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Work") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Work; blnPhoneFound = true; } else //Fax { if (objxmlPhoneNode.SelectSingleNode("Type").InnerText == "Fax") { objCaseParty.Phone.Type = ConservatorService.PhoneNumberTypes.Fax; blnPhoneFound = true; } } //Fax } //Work } // Cell if (blnPhoneFound) { if (objxmlPhoneNode.SelectSingleNode("Extension") != null) { string strExtension = objxmlPhoneNode.SelectSingleNode("Extension").InnerText; objCaseParty.Phone.Extention = strExtension; } if (objxmlPhoneNode.SelectSingleNode("Number") != null) { string strNumber = objxmlPhoneNode.SelectSingleNode("Number").InnerText; objCaseParty.Phone.Number = strNumber; } } } //Phone Current } } }
ZurdoDev
Это очень, очень легко исправить. Поставьте точку останова в своем коде, а затем шагайте через каждую строку и наблюдайте, что происходит. Вы очень быстро найдете проблему.
Мы не можем запустить ваш код, поэтому вам нужно сделать это.
Member 11403304
Когда я отлаживаю свой код, кажется, что код возвращает номер факса, потому что именно его он находит первым в моем xml-документе. Однако, несмотря на то, что этот номер факса имеет текущий номер, я хочу сначала отобразить домашний телефон перед номером факса. Я не знаю, как это сделать. Порядок в xml-документе-это не то, как я хочу, чтобы числа отображались.