Потратив часы на чтение сообщений, связанных с моим вопросом, я все еще в растерянности. Я загрузил мой xml файл в объект XDocument:
XDocument xDoc = XDocument.Load("fileName");
Элемент root в файле содержит 2 атрибута "xmlns":
<creditBureau xmlns="some url" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Мне нужно оставить только с <creditBureau>
. Если я вручную удаляю оба атрибута из исходного файла, я могу использовать var trades = xDoc.XPathSelectElements("/creditBureau/. . .");
для анализа необходимых мне данных из остальной части объекта XDocument.
Я могу собрать оба атрибута в var attributes
:
и я могу удалить атрибут xmlhs: xsi следующим образом:
var attributes = xDoc.Root.Attributes();
foreach (var attribute in attributes)
{
if (attribute.Name.LocalName.Equals("xsi"))
{
attribute.Remove();
}
}
Но повторение того же лога c, чтобы попытаться удалить оставшийся атрибут, похоже, не работает:
var attributes2 = xDoc.Root.Attributes();
foreach (var attribute in attributes2)
{
if (attribute.Name.LocalName.Equals("xmlns"))
{
attribute.Remove();
}
}
При наведении курсора на xDo c я все еще вижу атрибут xmlns, и мой последующий метод XPathSelectElements не возвращает никаких результатов.
Опять же, если я вручную удалю эти 2 атрибута из исходного файла, я получу ожидаемые xml элементы:
Возможно, я делаю это сложнее, чем нужно. Как я уже упоминал в начале, я часами читал и пробовал предлагаемые решения, но безрезультатно. Большая часть прочитанного относится к XmlDocument или к удалению атрибутов из потомков, а не root. Буду очень признателен за любую помощь, и я заранее извиняюсь, если уже есть опубликованный ответ, который я упустил.