Как исправить VB-код, чтобы он не отображал пустые XML-элементы из объекта?
Мой vb-код отображает пустые элементы из XML-документа, которые я не выбрал в коде. В DateOfBirth и элементы DateOfDeath отображаются, когда я запускаю код. Я не хочу, чтобы их показывали.
Эти элементы находятся внутри объекта, который имеет единственный элемент, который мне нужен, это отображаемое значение PartyId. Имя объекта-objCaseParty. В моем коде я выбираю PartyId из этого объекта. Однако DateOfBirth и DateOfDeath также отображаются в результирующем xml-файле, хотя я не выбрал их в своем vb-коде.
Как удалить эти два элемента из отображения?
Ожидаемый результат
<InsertPWBRorAOS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=""> <CaseNumber>10-PR-19-125</CaseNumber> <CompletedDate>2019-07-10T00:00:00</CompletedDate> <DueDate>2021-06-14T00:00:00</DueDate> <EventDate>2019-06-14T00:00:00</EventDate> <EventType>NOPERWELL</EventType> <RelatedParties> <CaseParty> <PartyId>9919636</PartyId> </CaseParty> </RelatedParties> </InsertPWBRorAOS>
Что я получаю
<InsertPWBRorAOS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=""> <CaseNumber>10-PR-19-125</CaseNumber> <CompletedDate>2019-07-10T00:00:00</CompletedDate> <DueDate>2021-06-14T00:00:00</DueDate> <EventDate>2019-06-14T00:00:00</EventDate> <EventType>NOPERWELL</EventType> <RelatedParties> <CaseParty> <DateOfBirth xsi:nil="true"/> <DateOfDeath xsi:nil="true"/> <PartyId>9919636</PartyId> <PartyType xsi:nil="true"/> </CaseParty> </RelatedParties> </InsertPWBRorAOS>
Вот xml-документ, который читает vb-код.
<?xml version="1.0" encoding="UTF-8"?> <Integration xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:tsg="http://tsgweb.com" xmlns:IXML="http://tsgweb.com" PackageID="MMG Updates"> <Case> <CaseEvent xmlns:reslib="urn:reslib" Op="E" Date="06/14/2019" ID="252945068" InternalEventID="1851137356"> <EventDate>06/14/2019</EventDate> <RevDate>06/14/2021</RevDate> <CompDate Op="E">07/10/2019</CompDate> <EventType Word="NOPERWELL">Personal Well-being Report [R]</EventType> <PartyID InternalPartyID="536367004">9919636</PartyID> </CaseEvent> <CaseParty ID="9919636" InternalCasePartyID="1655313331" InternalPartyID="536367004"> <CasePartyName Current="true" ID="10069192" InternalNameID="1615543609"> <NameFirst>Ynne</NameFirst> <NameLast>Zeett</NameLast> </CasePartyName> <DateOfBirth InternalDOBID="536308471">04/27/1981</DateOfBirth> </CaseParty> </Case> <IntegrationConditions> <IntegrationCondition Word="MMGUPD" Description="MMG Updates"> <NotificationEvent notificationType="MMGUpdate" elementState="Add" elementName="CaseEvent" elementKey="252945068">InsertPWBRorAOS</NotificationEvent> </IntegrationCondition> </IntegrationConditions> </Integration>
Что я уже пробовал:
Option Explicit On Option Strict On Imports System Imports System.Xml Imports System.Xml.XPath Imports System.Collections.Generic Imports System.Net.ServicePointManager Public Class InsertPWBRorAOS : Inherits MMGUpdates Public Shared Sub ProcessInsertPWBRorAOS(ByRef aobjBroker As Msc.Integration.MessageBroker.Library.v4.Broker, ByRef aobjXmlInputDoc As System.Xml.XmlDocument, ByVal aobjxmlNotificationEventNode As XmlNode) aobjBroker.PostMessageWarehouseInformationalMessage("Processing an InsertPWBRorAOS message", 1) Dim objMMGService As MMGService.GuardianServiceClient = GetServiceClient(aobjBroker) Dim objInsertPWBRorAOS As MMGService.InsertPWBRorAOS = New MMGService.InsertPWBRorAOS Dim objCaseParty As MMGService.CaseParty Dim intPartiesCount As Integer Dim i As Integer Dim strEventId As String Dim strPartyID As String Dim objxmlEventPartyIDNode As XmlNode 'CaseNumber objInsertPWBRorAOS.CaseNumber = aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseNumber").InnerText 'EventID strEventId = aobjxmlNotificationEventNode.SelectSingleNode("@elementKey").InnerText 'CaseEvent objxmlCaseEventNode = aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@Op='E' and @ID=" + strEventId + "]") 'CompletedDate objInsertPWBRorAOS.CompletedDate = CDate(aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@ID=" + strEventId + "]/CompDate").InnerText) 'DueDate is RevDate objInsertPWBRorAOS.DueDate = CDate(aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@ID=" + strEventId + "]/RevDate").InnerText) 'EventDate objInsertPWBRorAOS.EventDate = CDate(aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@ID=" + strEventId + "]/EventDate").InnerText) 'EventType strEventType = aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@ID=" + strEventId + "]/EventType/@Word").InnerText objInsertPWBRorAOS.EventType = CType([Enum].Parse(GetType(MMGService.EventTypes), strEventType), MMGService.EventTypes) 'Count parties in CaseEvent intPartiesCount = aobjXmlInputDoc.DocumentElement.SelectNodes("Case/CaseEvent[@ID=" + strEventId + "]/PartyID").Count 'RelatedParties objInsertPWBRorAOS.RelatedParties = New MMGService.CaseParty(intPartiesCount - 1) {} 'i = 0 'Loop through all PartyIDNodes in CaseEvent with ID equal to NotificationEvent's elementKey For Each objxmlEventPartyIDNode In aobjXmlInputDoc.DocumentElement.SelectNodes("Case/CaseEvent[@ID=" + strEventId + "]/PartyID") strPartyID = objxmlEventPartyIDNode.InnerText objCaseParty = New MMGService.CaseParty() objCaseParty.PartyId = strPartyID 'I only want to display PartyID objInsertPWBRorAOS.RelatedParties(i) = objCaseParty i += 1 Next End Sub
Dominic Burford
Вы прошли через свой код, чтобы увидеть, в какой момент добавляются элементы DateOfBirth и DateOfDeath? Вот с чего бы я начал. Запустите код в отладчике и посмотрите, где добавляются элементы, а затем измените код соответствующим образом.
Member 11403304
Я не могу этого сделать. Они находятся внутри объекта с именем objCaseParty
objInsertPWBRorAOS.RelatedParties(i) = objCaseParty