2015-03-02 157 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

是否絕對沒有一致性?或者是內容字段始終被稱爲 ..等等? – 2015-03-02 09:00:17

+1

關於這個來自政府的web服務沒有api?通常服務器端提供xml結構,也許你需要問問他們。 – 2015-03-02 09:03:16

+0

他們提供了大約30種可以返回的xml文檔,他們沒有固定的字段,這30個類型中的每一個看起來都完全不同。 什麼是殺手:你無法獲得這30種類型返回的信息。你只知道:這是其中的一個,但沒有機會說:它是一個「輸入」文件 – CeOnSql 2015-03-02 09:14:27

回答

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 2015-03-02 12:57:04