Почему .NET XML добавляет атрибут xlmns к элементам Xml, которые я добавляю в документ?Могу ли я остановить это? - PullRequest
2 голосов
/ 09 декабря 2011

Я добавляю XmlElement в существующий документ, но добавляется дополнительный атрибут. Вот код:

XmlNode manifest = this.getManifestNode ();
XmlElement manifestEntry = _content.CreateElement ("item", _contentPath);
XmlAttribute id = _content.CreateAttribute ("id"); 
id.Value = "content" + getManifestNodes ().Count;
XmlAttribute href = _content.CreateAttribute ("href"); 
href.Value = splitPath [splitPath.Length - 1]; 
XmlAttribute mediaType = _content.CreateAttribute ("media-type"); 
mediaType.Value = "application/xhtml+xml"; 
manifestEntry.Attributes.Append (id); 
manifestEntry.Attributes.Append (href); 
manifestEntry.Attributes.Append (mediaType); 
manifest.AppendChild (manifestEntry);

и полученный XML:

<item id="content3" href="test1.html" media-type="application/xhtml+xml" xmlns="/home/jdphenix/epubtest/test/OEBPS/content.opf" />

Где находится

xmlns="/home/jdphenix/epubtest/test/OEBPS/content.opf"

откуда? Путь, который он добавляет, - это местоположение документа на диске, но я не добавляю его в свой код (по крайней мере, это мне известно). Дайте мне знать, если вам нужно узнать больше деталей.

Редактировать: я изменил свой код в соответствии с предложением Филбурта и изменил

XmlElement manifestEntry = _content.CreateElement ("item", _contentPath);

до

XmlElement manifestEntry = _content.CreateElement ("item");

Это шаг в правильном направлении, но он создает следующий XML:

<item id="content3" href="test1.html" media-type="application/xhtml+xml" xmlns="" />

1 Ответ

2 голосов
/ 09 декабря 2011

Вы добавляете это пространство имен самостоятельно (Строка 2):

XmlElement manifestEntry = _content.CreateElement ("item", _contentPath);

См. Метод XmlDocument.CreateElement (String, String) - первый параметр String - это полное имя добавляемого элемента, а вторая строка - пространство имен.

Попробуйте

XmlElement manifestEntry = _content.CreateElement ("item");

и все должно быть хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...