XML-запрос, первый узел которого начинается с некоторого объявления - PullRequest
0 голосов
/ 08 января 2011

У меня нет проблем с использованием linq to xml для запроса xml, но у меня есть этот специальный xml-файл, первый узел которого начинается с объявления. Если не было отклонения (например: xmlns: dm0 = "http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core") Я просто использую деканданты, чтобы начать запрашивать данные. Мой вопрос заключается в том, как запросить xml ex: получить значение 'LTD.ArgiddenNamespaceDependencies' в следующем формате:

<?xml version="1.0" encoding="utf-8"?>

<layerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core">


<layers>
<layer Id="6c1b89f1-9204-4914-a721" name="Layer1" forbiddenNamespaceDependencies="NameSpace1">
  <references>...

1 Ответ

0 голосов
/ 08 января 2011

Я не вижу, в чем проблема. Я взял ваш фрагмент и добавил закрывающие теги, чтобы получить правильно сформированный XML-документ, похожий на этот:

<?xml version="1.0" encoding="utf-8"?>

<layerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core">


  <layers>
    <layer Id="6c1b89f1-9204-4914-a721" name="Layer1" forbiddenNamespaceDependencies="NameSpace1">
      <references>
        ...
      </references>>
    </layer>
  </layers>
</layerModel>

Тогда следующий код C #

    XDocument doc = XDocument.Load(@"..\..\XMLFile1.xml");
    Console.WriteLine(doc.Root.Element("layers").Element("layer").Attribute("forbiddenNamespaceDependencies").Value);

прекрасно выводит значение атрибута "iddeniddenNamespaceDependencies ", объявление пространства имен для корневого элемента не имеет значения, поскольку в этом пространстве имен нет элементов или атрибутов в вашем образце.

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

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