Как удалить атрибут xmlns с.NET XML API

Самый лучший способ добавить суффикс на мой взгляд.

df = df.add_suffix('_some_suffix')

Поскольку это функция, которая вызывается в DataFrame и возвращает DataFrame, вы можете использовать ее в цепочке вызовов.

8
задан pnuts 16 November 2015 в 21:37
поделиться

7 ответов

API DOM.NET не поддерживает пространство имен элемента изменения, которое является тем, что Вы по существу пытаетесь сделать. Так, для решения проблемы, необходимо создать новый документ так или иначе. Можно использовать тот же DOM.NET API и создать новый элемент, не указывая его пространство имен. С другой стороны, можно создать таблицу стилей XSLT, которая преобразовывает исходный "namespaced" документ новому, в котором не будут квалифицированы к пространству имен элементы.

2
ответ дан 5 December 2019 в 20:20
поделиться

Разве это, как предполагалось, не удалило пространства имен?

XmlNamespaceManager mgr = new XmlNamespaceManager("xmlnametable");
mgr.RemoveNamespace("prefix", "uri");

Но так или иначе на касательной здесь, XElement, XDocument и классах XNameSpace от Системы. Xml. Пространство имен Linq (.Net 3.0) является лучшей партией, чем старая модель XmlDocument. Дайте ему движение. Я увлекаются.

1
ответ дан 5 December 2019 в 20:20
поделиться

Да, потому что ИМЯ ЭЛЕМЕНТА, Вы не можете явно удалить его. Используя WriteStartElement XmlTextWriter и WirteStartAttribute и замену атрибута с вакуумами будет, вероятно, чтобы сделать задание.

Я проверяю его теперь. обновит.

0
ответ дан 5 December 2019 в 20:20
поделиться

Возможно, канавка XmlNamespaceManager? http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.removenamespace.aspx, но это - просто предположение.

0
ответ дан 5 December 2019 в 20:20
поделиться

Мы можем преобразовать xml в строку, удалить xmlns из этой строки, а затем создать другой документ XmlDocument, используя эту строку, в которой не будет пространства имен.

0
ответ дан 5 December 2019 в 20:20
поделиться

Я видел различные варианты в этом потоке и пришел, чтобы найти свое собственное решение для удаления атрибутов xmlns в xml. Это работает правильно и не вызывает проблем:

'Remove the Equifax / Transunian / Experian root node attribute that have xmlns and load xml without xmlns attributes.
If objXMLDom.DocumentElement.NamespaceURI <> String.Empty Then
  objXMLDom.LoadXml(objXMLDom.OuterXml.Replace(objXMLDom.DocumentElement.NamespaceURI, ""))
  objXMLDom.DocumentElement.RemoveAllAttributes()
  ResponseXML = objXMLDom.OuterXml
End If

Нет необходимости что-либо делать иначе, чтобы удалить xmlns из xml.

2
ответ дан 5 December 2019 в 20:20
поделиться

Большое спасибо Али Шаху, эта тема отлично решила мою проблему! вот преобразование C #:

var dom = new XmlDocument();
        dom.Load("C:/ExampleFITrade.xml));
        var loaded = new XDocument();
        if (dom.DocumentElement != null)
            if( dom.DocumentElement.NamespaceURI != String.Empty)
            {
                dom.LoadXml(dom.OuterXml.Replace(dom.DocumentElement.NamespaceURI, ""));
                dom.DocumentElement.RemoveAllAttributes();
                loaded = XDocument.Parse(dom.OuterXml);
            }
2
ответ дан 5 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: