2015-03-02 2 views
2

В настоящее время я работаю над решением, которое работает с WebService, который размещается правительством (так что нет шансов что-либо изменить на этой стороне ;-)).Динамически отображать XML-контент

Метод, который я использую, возвращает строку XML - настолько хорошо.

Проблема: Возвращенный XML может иметь много разных структур, и нет способа узнать, какой из них возвращен. Нет XSD или что-нибудь еще доступны ....

Пример псевдокода:

string XmlFileContent = WebService.MethodGetXMLFile(filekey) 

XmlFileContent может, например, выглядеть следующим образом:

<XML> 
<Field1>sometext</Field1> 
</XML> 

или

<Table Date ="20150302" Time = "0946"> 
<Row> 
<Field1>sometext</Field1> 
<Field2>2341.5145</Field2> 
</Row> 
</Table> 

или любого рода XML вы можете думать о ...

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

Клиент, который работает с WebService, написан на C# (.NET 4.5), технология отображения данных XML не имеет значения - все, что помогает, является совершенным. (Может быть, HTML или что-то вроде этого ??)

+0

нет абсолютно никакой консистенции? или поля содержимого всегда называются .. и так далее? –

+1

нет ави об этом веб-сервисе от правительства?. Обычно серверная сторона предоставляет структуру xml, может быть, вам нужно их спросить. –

+0

они предоставляют около 30 видов XML-документов, которые могут быть возвращены, у них нет постоянных полей, каждый из этих 30 типов выглядит совершенно другим. и что убийца: вы не можете получить информацию о том, какой из этих 30 типов будет возвращен. Вы знаете только: это одно из них, но нет возможности сказать: его документ типа «a» – CeOnSql

ответ

1

До тех пор, пока 1-й пример является ошибкой (это не правильный xml) , вы можете попробовать что-то вроде этого, если хотите только его отобразить. Вам нужно будет добавить некоторое форматирование, но он более удобен для пользователя, чем простой xml.

 [Test] 
    public void test() 
    { 
     var a = @"<XML> 
     <Field1>sometext</Field1> 
     </XML>"; 

     var b = @"<Table Date ='20150302' Time = '0946'> 
     <Row> 
     <Field1>sometext</Field1> 
     <Field2>2341.5145</Field2> 
     </Row> 
     </Table>"; 

     XDocument doc=XDocument.Parse(b); 
     PrintAllNodes(doc.Descendants()); 
    } 

    private void PrintAllNodes(IEnumerable<XElement> nodes) 
    { 
     foreach (var node in nodes) 
     { 
      foreach (var xAttribute in node.Attributes()) 
      { 
       Console.WriteLine(xAttribute.Name + ": " + xAttribute.Value); 
      } 

       Console.WriteLine(node.Name + " " + node.Value); 
     } 

    } 
+0

Спасибо за вашу помощь, я попробую! (извините, что вы, конечно, правы, первый пример был неправильным - отредактирован!) – CeOnSql

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