2015-09-29 46 views
0

不需要手動解析文件,.Net是否可以輕鬆將XML轉換爲XmlElement,datatable,list或更易於管理的東西?用XML將字符串轉換爲數據表,列表或更易於管理的東西?

這是實際的字符串。該字符串當前存儲在XmlNode對象(這是XmlNode.OuterXml),但我不知道如何轉換成的東西,我可以實際使用:

<ni> 
    <nss>20150927</nss> 
    <gp>Addon</gp> 
    <ns>CounterBlah1</ns> 
    <ns>CounterBlah2</ns> 
    <ns>CounterSales</ns> 
    <ns>CounterBlah4</ns> 
    <ns>CounterBlah5</ns> 
    <ns>CounterBlah6</ns> 
    <nv> 
     <nad>Style=1,Rfu=1,Id=132</nad> 
     <r>0</r> 
     <r>15</r> 
     <r>8</r> 
     <r>3</r> 
     <r>2</r> 
     <r>2</r> 
    </nv> 
    <nv> 
     <nad>Style=1,Rfu=1,Id=433</nad> 
     <r>0</r> 
     <r>15</r> 
     <r>30</r> 
     <r>3</r> 
     <r>2</r> 
     <r>2</r> 
    </nv> 
    <nv> 
     <nad>Style=1,Rfu=1,Id=665</nad> 
     <r>0</r> 
     <r>15</r> 
     <r>90</r> 
     <r>3</r> 
     <r>2</r> 
     <r>2</r> 
    </nv> 
</ni> 

感謝。

+0

是的,它的確如此。你究竟想從字符串中得到什麼? –

+0

我想通過爲每個''得到''來迭代字符串,然後在每個''中得到第3個''。 – rbhat

+0

如果這就是你想要的,我的答案會適合你。 –

回答

0

使用Linq-to-Xml,你可以得到這樣的

//using System.Xml.Linq; 
//using System.Linq; 

//xmlStr = your xml string 
var xDoc = XDocument.Parse(xmlStr); 
var nvs = xDoc.Descendants("nv"); 
var nads = nvs.Select(nv => nv.Elements("nad").First().Value).ToList(); 
var thirdRs = nvs.Select(nv => nv.Elements("r").ElementAt(2).Value).ToList(); 

這是你的數據是代碼生成什麼,因爲樣本XML

NADS = [「 Style = 1,Rfu = 1,Id = 132「,」Style = 1,Rfu = 1,Id = 433「,」Style = 1,Rfu = 1,Id = 665「]
thir dRs = [「8」,「30」,「90」]

+0

它的工作,謝謝。 – rbhat

+0

@rbhatup很高興它幫助。 –

0

試試這個

  string input = "<ni><nss>20150927</nss><gp>Addon</gp><ns>CounterBlah1</ns><ns>CounterBlah2</ns><ns>CounterSales</ns><ns>CounterBlah4</ns><ns>CounterBlah5</ns><ns>CounterBlah6</ns><nv><nad>Style=1,Rfu=1,Id=132</nad><r>0</r><r>15</r><r>8</r><r>3</r><r>2</r><r>2</r></nv><nv><nad>Style=1,Rfu=1,Id=433</nad><r>0</r><r>15</r><r>30</r><r>3</r><r>2</r><r>2</r></nv><nv><nad>Style=1,Rfu=1,Id=665</nad><r>0</r><r>15</r><r>90</r><r>3</r><r>2</r><r>2</r></nv></ni>"; 
      StringReader reader = new StringReader(input); 

      DataSet ds = new DataSet(); 
      ds.ReadXml(reader);​ 
相關問題