Я пытался вставить узел xml в документ xml в определенной позиции.Вставить узел в документ xml с помощью C#
Это мой XML:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <readContract xmlns="http://implementation.company.schema.reference"> <ContactNumbers>10158</ContactNumbers> <productGroups>0085</productGroups> <indicationBalanceInfo>false</indicationBalanceInfo> <indicationBlocked>true</indicationBlocked> </readContract> </Body> </Envelope>
И пытаюсь вставить другой тег <productGroups>0093</productGroups>
ниже тега <productGroups>0085</productGroups>
Ожидая как ниже:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <readContract xmlns="http://implementation.company.schema.reference"> <ContactNumbers>10158</ContactNumbers> <productGroups>0085</productGroups> <productGroups>0093</productGroups> <indicationBalanceInfo>false</indicationBalanceInfo> <indicationBlocked>true</indicationBlocked> </readContract> </Body> </Envelope>
Used ниже код C# для его достижения.
XmlDocument doc = new XmlDocument();
string inputxml = this.StServiceCallActivity5.InputEnvelope.InnerXml.ToString();
//Here inputxml contains whole xml document.
string addxml = "<productGroups>0093</productGroups>";
doc.LoadXml(inputxml);
XmlDocumentFragment xmlDocFrag = doc.CreateDocumentFragment();
xmlDocFrag.InnerXml = addxml;
XmlElement parentEle = doc.DocumentElement;
parentEle.AppendChild(xmlDocFrag);
И это возвращает значение как <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <readContract xmlns="http://implementation.company.schema.reference"> <ContactNumbers>10158</ContactNumbers> <productGroups>0085</productGroups> <productGroups>0093</productGroups> <indicationBalanceInfo>false</indicationBalanceInfo> <indicationBlocked>true</indicationBlocked> </readContract> </Body> <productGroups xmlns="">0093</productGroups> </Envelope>
новичок в C# код, любезно помочь мне, чтобы получить XML-документ, как и ожидалось. Ваша помощь очень ценится.
Спасибо, Мадхен
Не могли бы вы конкретно указать, что не так с вашим выходом, т. Е. Как оно не соответствует тому, что вы ищете? Пожалуйста, не заставляйте нас расчесывать ваш XML, чтобы попытаться выяснить, что с ним не так. –
Просто добавлен новый элемент в верхний узел документа. Вам нужно перейти к узлу, который вы хотите добавить, в - в вашем случае - узле. –
user2867342
Используйте запрос XPath, например 'XmlNode titleNode = doc.SelectSingleNode (" // Envelope/Body/readContract ");' – user2867342