2016-12-07 13 views
1

文字列にxmlデータがあり、分割したいので、結果をLableに表示したい。ここで文字列の値を分割する

は私のコードです:

string param = <HCToolParameters><BatchId>12</BatchId><HCUser>Admin</HCUser</HCToolParameters>; 
var a = param.Split(new string[] { "<HCToolParameters>" }, StringSplitOptions.RemoveEmptyEntries); 
var b = param.Split(new string[] { "<BatchId>12</BatchId>" }, StringSplitOptions.RemoveEmptyEntries); 
var c = param.Split(new string[] { "<HCUser>Admin</HCUser>" }, StringSplitOptions.RemoveEmptyEntries); 
var d = param.Split(new string[] { "</HCToolParameters>" }, StringSplitOptions.RemoveEmptyEntries); 

例:

String value = 
<HCToolParameters><BatchId>12</BatchId><HCUser>Admin</HCUser></HCToolParameters> 

期待される結果:

<HCToolParameters> 
<BatchId>12</BatchId> 
<HCUser>Admin</HCUser> 
</HCToolParameters> 
+0

文字列内の2つのタグが閉じていないのはなぜですか? – mybirthname

+0

@mybirthnameさらに悪いことに、それは3です –

+0

[XMLストリングを印刷するフレンドリーXMLストリングをフォーマットする]の可能な複製(http://stackoverflow.com/questions/1123718/format-xml-string-to-print-friendly-xml-string ) – Mark

答えて

0

さてあなたは、このことにより、簡単に行うことができます:

value = value.Replace("><", ">" + Environment.NewLine + "<"); 

このあなたの例でワークアウトで簡単です、あなたはそれをこのようにしようとするだろう、なぜ...あなたは配列としてそれを必要とする場合(私は本当に知らないでしょう。

var array = value.Replace("><", ">#<").Split('#'); 
0

何ので、あなたがXmlTextWriter.Formatting = Formatting.Indented;を使用することができますXMLの文字列を書式化したかったのです。この機能は、私はあなたが有効なXMLを持って物乞いに表示されるものとします

public static String FormatMyXML(String SomeXML) 
{ 
    String Result = ""; 
    MemoryStream mStream = new MemoryStream(); 
    XmlTextWriter wrtr = new XmlTextWriter(mStream, Encoding.Unicode); 
    XmlDocument document = new XmlDocument(); 
    try 
    { 
     document.LoadXml(SomeXML); 
     wrtr.Formatting = Formatting.Indented; 
     document.WriteContentTo(wrtr); 
     wrtr.Flush(); 
     mStream.Flush(); 
     mStream.Position = 0; 
     StreamReader sReader = new StreamReader(mStream); 
     String FormattedXML = sReader.ReadToEnd(); 
     Result = FormattedXML; 
    } 
    catch (XmlException) 
    { 
    } 
    mStream.Close(); 
    wrtr.Close(); 
    return Result; 
} 
1

のためのトリックを行う可能性があり、それをspliting停止し、XMLパーサーを使用します!

string param [email protected]"<HCToolParameters><BatchId>12</BatchId><HCUser>Admin</HCUser></HCToolParameters>"; 

XDocument doc = XDocument.Parse(param); 

Console.WriteLine(doc.ToString());