XmlDocument loping (foreach) reomving NameSpace "xmlns" - PullRequest
1 голос
/ 18 февраля 2020

эй, ребята, у меня был XML файл, и я использовал XDocument для записи на него и используя следующую пустоту, удалите пространство имен

string path = Server.MapPath(xmlpath);
XDocument doc = XDocument.Load(path)
XElement root = new XElement("url");
foreach (var node in doc.Root.Descendants()
                           .Where(n => n.Name.NamespaceName == ""))
                {
                    node.Attributes("xmlns").Remove();
                    node.Name = node.Parent.Name.Namespace + node.Name.LocalName;
                }

эта функция работает на 100% с XDocument, теперь я изменил

XDocument oldDoc = XDocument.Load(path);// the old doucument

XmlDocument newDoc = new XmlDocument();//the new document 

Мне нужна функция, которая позволяет мне выполнять копирование и удалять пространство имен xmlns из моих узлов так же, как и выше, большое спасибо за ваше время и большое спасибо за чтение моего вопроса

1 Ответ

1 голос
/ 29 февраля 2020

Вы были очень близко , просто пришлось использовать перегрузку XMLDocument.CreateElement(string Name), которая возвращает a XMLNode, а затем использовать свойство .InnerText для установки значения

var mainRoot = doc.DocumentElement; //urlset element
var urlRoot = doc.CreateElement("url"); //create url element
var VidooTree = urlRoot.AppendChild(doc.CreateElement(a, ""));
urlRoot.AppendChild(doc.CreateElement("loc", "http:/domain/site.com"));
VidooTree.AppendChild(doc.CreateElement(b)).InnerText="imgur";
VidooTree.AppendChild(doc.CreateElement(c)).InnerText= "videoTitle";
VidooTree.AppendChild(doc.CreateElement("video:description")).InnerText= "videoDec";
VidooTree.AppendChild(doc.CreateElement(d)).InnerText= "VideoApi";
VidooTree.AppendChild(doc.CreateElement(m)).InnerText= "duration";
VidooTree.AppendChild(doc.CreateElement(nn)).InnerText= "2050-11-05T19:20:30+08:00";
VidooTree.AppendChild(doc.CreateElement(e)).InnerText= "watched";
VidooTree.AppendChild(doc.CreateElement(k)).InnerText= "date";
VidooTree.AppendChild(doc.CreateElement(f)).InnerText= "yes";
VidooTree.AppendChild(doc.CreateElement(g)).InnerText="No";
VidooTree.AppendChild(doc.CreateElement(h)).InnerText= "VideoKindName";
urlRoot.AppendChild(VidooTree);
mainRoot.AppendChild(urlRoot);

Выход

<url xmlns="">
 <loc xmlns="http:/domain/site.com" />
  <video>
    <thumbnail_loc>imgur</thumbnail_loc>
    <title>videoTitle</title>
    <description>videoDec</description>
    <content_loc>VideoApi</content_loc>
    <duration>duration</duration>
    <expiration_date>2050-11-05T19:20:30+08:00</expiration_date>
    <view_count>watched</view_count>
    <publication_date>date</publication_date>
    <family_friendly>yes</family_friendly>
    <live>No</live>
    <category>VideoKindName</category>
  </video>
</url>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...