Ggalla17792 Ответов: 2

Удалить пространство имен xmlns:kk="kk" из XML-данных


Привет Я создал XML-файл, однако 1 из узлов добавляет ссылку на пространство имен, и я не могу ее удалить. Только добавляет к первому элементу/узлу.

Код
XmlDocument doc =doc.Load(System.Configuration.ConfigurationManager.AppSettings["doctemploc"]);


XmlElement Blaett = doc.CreateElement("kk:Blaett","kk");
 XmlAttribute numbber = doc.CreateAttribute("number");

Blaett.Attributes.Append(numbber);


Что я уже пробовал:

nummer.RemoveAttribute("xmlns:kk");
nummer.Attributes().Where(a => a.IsNamespaceDeclaration).Remove()
nummer.Attributes("xmlns").Remove();

2 Ответов

Рейтинг:
2

Richard Deeming

Если вы не хотите, чтобы пространство имен было в выходных данных, то не указывайте пространство имен.

Заменять:

XmlElement Blaett = doc.CreateElement("kk:Blaett","kk");
с:
XmlElement Blaett = doc.CreateElement("Blaett");

NB: Недопустимо ли для XML-документа использовать префикс пространства имен без объявления этого пространства имен?


Maciej Los

Я бы сказал: это довольно очевидно...
:смеяться:

Ggalla17792

Я попробовал это сделать, но он просто переместил xmlns:kk="kk" вниз к следующему элементу и повторил его снова.

При этом удаляется вручную (от &ЛТ;Blaett numbber="311" атрибутов xmlns:КК="КК"и GT; к <Blaett numbber="311"и GT;) он проверяет против схемы xsd

Richard Deeming

Потому что вы указываете пространство имен для следующего элемента (чего вы не показали в своем вопросе).

Если вы не хотите, чтобы пространство имен было в выходных данных, то не указать пространство имен когда вы создаете элементы!

Ggalla17792

Ваше благо....Я попробовал сделать то же самое, удалив доктора.CreateElement("kk:Blaett","kk") и последующие.

Он не прошел проверку на соответствие XSD... ему нужно пространство имен a front ie <kk:Blaett.

Это было очень неприятно, пытаясь заставить его работать...

Richard Deeming

Если ему нужно пространство имен, то почему вы пытаетесь его удалить?!

XML-файл с префиксным именем, который не соответствует объявлению пространства имен, недопустим.

Рейтинг:
0

Ggalla17792

Спасибо за ответ....Я проверил файл на соответствие ему, сгенерированному выше, и он потерпел неудачу... он ищет префикс с пространством имен....


Ggalla17792

Эта статья здесь выглядит близко к тому, что я хочу...Мне просто нужно удалить префиксом xmlns:КК="КК" от линии &ЛТ;Blaett numbber="311" атрибутов xmlns:КК="КК"и GT;

https://www.codeproject.com/Questions/1167775/Remove-namespace-from-XML

Richard Deeming

Если вы хотите ответить на решение, нажмите кнопку "есть вопрос или комментарий?" кнопка под этим решением.

НЕ опубликуйте свой комментарий как новое "решение".