Я создаю XML, используя Linq для XML и C#. Все это отлично работает, за исключением случаев, когда мне нужно вручную добавить строку в XML. Эта строка добавляется только в том случае, если у меня есть значение для ее прохождения, иначе я просто игнорирую весь тег.Как добавить (или игнорировать) пространство имен XML при использовании XElement.Load
Я использую XElement.Load для загрузки в строку текста, которую храню в строке, но когда я прикрепляю ее к XML, он всегда помещает xmlns = "" в конец моего тега.
Есть ли способ, которым я могу рассказать XElement.Load использовать существующее пространство имен или игнорировать его при вводе строки в XML?
В идеале я просто хочу, чтобы моя строка была включена в создаваемый XML без добавления дополнительных тегов.
Ниже приведен пример того, что я в настоящее время сделать:
string XMLDetails = null;
if (ValuePassedThrough != null)
XMLDetails = "<MyNewTag Code=\"14\" Value=\"" + ValuePassedThrough +"\"></MyNewTag>";
Когда я застроить XML загружаю вышеупомянутую строку в мой XML. Именно здесь xmlns = "" добавляется к значению XMLDetails, но в идеале я хочу, чтобы это игнорировалось, поскольку оно вызывает проблемы с получателем, когда они пытаются прочитать этот тег.
XNamespace ns = "http://namespace-address";
XNamespace xsi = "http://XMLSchema-instance-address";
XDocument RequestDoc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement(ns + "HeaderTag",
new XAttribute("xmlns", ns),
new XAttribute(XNamespace.Xmlns + "xsi", xsi),
new XAttribute(xsi + "schemaLocation", "http://www.addressofschema.xsd"),
new XAttribute("Version", "1"),
new XElement(ns + "OpeningTAG",
... Мой XML код ...
XElement.Load(new StringReader(XMLDetails))
... Конец кодекса XML ...
Как уже упоминалось выше. Мой код работает, он успешно выводит XML для меня. Его только тег MyNewTag, который я загружаю с помощью XElement.Load, получает xmlns = "", добавленный к концу этого, что вызывает у меня проблему.
Любые идеи, как я могу обойти это? Спасибо за вашу помощь.
С уважением, Богатые
Hi Jon, спасибо за вашу помощь. Ваш ответ имеет смысл, но когда я пытаюсь использовать ваше предложение, VS говорит мне, что System.Xml.Linq.XElement не содержит определения для «LocalName». Я согласен с вашей точкой в том, чтобы вручную создать XML как строку, но если мне нужно применить логику, как я могу сделать это в середине создания XML при его создании с помощью Linq? Еще раз спасибо. –
Упс, отредактированный, чтобы получить локальное имя XName. Вы можете создать XML так же, как сейчас, просто сделайте XMLDetails XElement вместо строки. К сожалению, не совсем ясно, как вы позже используете XMLDetails, но это должно работать нормально. Если нет, просьба дать более подробную информацию - или предпочтительно короткую, но полную программу. –