В настоящее время я пишу класс C #, который позволяет мне создавать сущности из канала OData.Не спрашивайте почему, мне просто нужно это сейчас:)
Фрагмент XML выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <entry xml:base="http://demo.tenforce.acc/Api.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> <id>http://demo.tenforce.acc/Api.svc/Items(387)</id> <title type="text"></title> <updated>2011-09-22T07:35:54Z</updated> <author> <name /> </author> <link rel="edit" title="Item" href="Items(387)" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Children" type="application/atom+xml;type=feed" title="Children" href="Items(387)/Children" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Parent" type="application/atom+xml;type=entry" title="Parent" href="Items(387)/Parent" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Attachments" type="application/atom+xml;type=feed" title="Attachments" href="Items(387)/Attachments" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Predecessors" type="application/atom+xml;type=feed" title="Predecessors" href="Items(387)/Predecessors" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Successors" type="application/atom+xml;type=feed" title="Successors" href="Items(387)/Successors" /> <category term="TenForce.Execution.Api2.Objects.Item" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:Id m:type="Edm.Int32">387</d:Id> </m:properties> </content> </entry>
Я создал фрагмент кода, который загружает весьXML-строка в XmlDocument, а также генерирует XmlNamespaceManager, чтобы иметь доступ к различным пространствам имен.
Я пытаюсь выбрать элемент <category> из XML, но не могу получить Xpathвыражение право.Я пробовал следующее:
<category>
Но, похоже, ни один из выбранных узлов не выбран.
О, неважно, я нашел решение. Мне пришлось добавить пространство имен для элементов атома ....
var manager = new XmlNamespaceManager(_mDocument.NameTable); manager.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices"); manager.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"); manager.AddNamespace("atom", "http://www.w3.org/2005/Atom");
Это позволило мне выбрать элемент <category>, используя // atom: category