2012-08-23 7 views
0

У меня есть пример кода Xml фрагментКак проверить XELement и его дочерние элементы?

<modification name="givenName" operation="add" xmlns="urn:oasis:names:tc:DSML:2:0:core"> 
    <value>Changed name</value> 
</modification> 

XML-загружен в мой XElement, и я использовал

 XElement xml = ...to load xml above...; 
     xml.Should().HaveAttribute("name", "givenName") 
      .And.HaveAttribute("operation", "add") 
      .And.HaveAttribute("xmlns", "urn:oasis:names:tc:DSML:2:0:core") 
      .And.HaveElement("value"); 

проверить свой код, тестирование атрибуты все прошло, но тестирование элементов (последнее условие) терпит неудачу.

Любой может указать, что не так с моим кодом?

И как я могу проверить, что Xml имеет элемент с именем «значение», а его значение «Изменено имя»?

Заранее благодарен!

ответ

2

Я подозреваю, что проблема заключается в том, что XName элемента не только value - это valueс пространством имен. Предположительно HaveElement - это пространство имен. Попробуйте это:

XElement xml = ...to load xml above...; 
XNamespace ns = "urn:oasis:names:tc:DSML:2:0:core"; 
xml.Should().HaveAttribute("name", "givenName") 
    .And.HaveAttribute("operation", "add") 
    .And.HaveAttribute("xmlns", "urn:oasis:names:tc:DSML:2:0:core") 
    .And.HaveElement(ns + "value"); 

Последняя строка проверяет является ли это получило имен квалифицированного элемента.

+0

Хороший улов, я должен включить пространство имен. Однако мне нужно немного изменить код 'And.HaveElement ((ns +" value "). ToString())' иначе он не будет компилироваться. – hardywang

+0

Любой ключ, как я могу проверить Значение элемента - «Изменено имя»? – hardywang

+0

@hardywang: Urgh - это не принимает XName? Это отстой как API :( –

2

Это будет часть Fluent Assertions 2.1. Если вы не можете ждать, вы можете получить его через репозиторий Git

Смежные вопросы