Потомки XDocument, использующие значение элементов в c #

1

У меня проблема, я не могу... и не знаю, что с ней не так?

код:

static void Main(string[] args)
 {
  XDocument doc = XDocument.Load(args[0] + "/?verb=GetRecord&metadataPrefix=p3dm&identifier=" + 1);
  doc.Save("doc.xml");
  var node = doc.Descendants("identifier");
  foreach (var n in node)
   {
    doc.Save("file_" + n.Value + ".xml");
   }
 }

doc.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
    <OAI-PMH xmlns="..." xmlns:xsi="..." xsi:schemaLocation="...">
      <responseDate>...</responseDate>
      <request verb="GetRecord" identifier="1"</request>
      <GetRecord>
        <record>
          <header>
            <identifier>1</identifier>
            <datestamp>...</datestamp>
          </header>
          <metadata>
            <P3DM xmlns="..." xsi:schemaLocation="...">
              <MODELINFOID>1</MODELINFOID>
              <TITLE>Roth</TITLE>
  ....

Как мы видим в doc.xml, существует элемент со значением 1 и использование Descendants и foreach... Я хотел бы сохранить тот же документ, но используя значение тега, чтобы назвать мой выходной файл. Что я делаю не так. Этот код предназначен только для тестирования.

  • 0
    В чем проблема? Вы ожидаете, что мы догадаемся? Читать ваши мысли?
  • 0
    нет, когда я запускаю это все, что я получаю в папке для сохранения, это doc.xml, нет file_1.xml. Почему?
Теги:

1 ответ

0
Лучший ответ

Ваш XML имеет пространство имен по умолчанию. Вы можете использовать XNamespace плюс имя элемента для адреса элемента в пространстве имен:

......
//assume that the default namespace declared as <OAI-PMH xmlns="dummy.uri" ....>
XNamespace d = "dummy.uri";
var node = doc.Descendants(d+"identifier");
......

Ещё вопросы

Сообщество Overcoder
Наверх
Меню