您可以使用LINQ到XML是這樣的:
static void Main(string[] args)
{
string path = "XMLFile1.xml";
XDocument xdoc = XDocument.Load(path);
var ops = xdoc.Descendants("OPERATION")
.Elements()
.Select(n => n.ToString())
.ToList<string>();
ops.ForEach(s => Console.WriteLine(s));
}
我用這個示例XML(用於測試目的添加隨機的東西):
<RISKCALC-OUT>
<AUTHENTICATION>
<USERID></USERID>
</AUTHENTICATION>
<OPERATION-LIST>
<OPERATION MODEL="PRV" SUBMODEL="GBR40EDF" VERSION="4.0" FUNCTION="EDFCLC" TARGET="New Platform">
<SUBNODES ID="1">
<ANOTHER ID="56"></ANOTHER>
</SUBNODES>
</OPERATION>
<OPERATION MODEL="PRV" SUBMODEL="GBR40EDF" VERSION="4.0" FUNCTION="EDFCLC" TARGET="New Platform">
<SUBNODES ID="1">
<ANOTHER ID="65"></ANOTHER>
</SUBNODES>
</OPERATION>
</OPERATION-LIST>
</RISKCALC-OUT>
,並得到這個輸出與以上代碼:
要保留OPERATION節點,您可以刪除El對此語句()這樣的:
var ops = xdoc.Descendants("OPERATION")
.Select(n => n.ToString())
.ToList<string>();
將產生
<OPERATION MODEL="PRV" SUBMODEL="GBR40EDF" VERSION="4.0" FUNCTION="EDFCLC" TARGE
T="New Platform">
<SUBNODES ID="1">
<ANOTHER ID="56"></ANOTHER>
</SUBNODES>
</OPERATION>
<OPERATION MODEL="PRV" SUBMODEL="GBR40EDF" VERSION="4.0" FUNCTION="EDFCLC" TARGE
T="New Platform">
<SUBNODES ID="1">
<ANOTHER ID="65"></ANOTHER>
</SUBNODES>
</OPERATION>
請出示一個例子的結果,所以它也不含糊,人們在黑暗中不鬆搜索。這些是你期望看到的第一個字符串,第二個字符串是否相同? –
您*不需要分隔任何東西,您需要*選擇*操作節點,使用XPath或LINQ to XML。您可以使用'// OPERATION' XPath表達式返回所有操作節點,例如[XmlDocument.SelectNodes](https://msdn.microsoft.com/en-us/library/hcebdtae(v = vs.110))。 ASPX)。如果使用XDocument,則可以鍵入LINQ查詢而不是XPath –
對不起,每個操作如下所示:https://gist.github.com/robbiewoods05/0a50ff5d1905e8f1ff83 這正是我希望每個字符串看起來像。 –