我有一個XML格式是這樣的:對保留空白/縮進的XML進行排序?
<?xml version="1.0" encoding="Windows-1252"?>
<!--MasterMusik Video Database-->
<Videos>
<Video><Name>SKRILLEX & WOLFGANG GARTNER - THE DEVIL's DEN</Name><Genre>Techno</Genre><Format>mp4</Format><HD>HD</HD><Resolution>1280x720</Resolution><Size>70,57</Size></Video>
<Video><Name>4 Strings - Let It Rain</Name><Genre>Dance</Genre><Format>mp4</Format><HD>HD</HD><Resolution>1920x1080</Resolution><Size>129,3</Size></Video>
<Video><Name>Deadmau5 - I Remember (Live At Roskilde Festival)</Name><Genre>Trance</Genre><Format>mkv</Format><HD>SD</HD><Resolution>704x384</Resolution><Size>97,99</Size></Video>
</Videos>
我想通過自己的「名稱」標籤中的元素進行排序。
這是我使用的元素Sort XML document
Private Function XML_Sort(ByVal xdoc As XDocument, _
ByVal Root_Element As String, _
ByVal Element_to_sort As String) As XDocument
Try
xdoc.Root.ReplaceNodes(xdoc.Root.Elements(Root_Element) _
.OrderBy(Function(sort) sort.Element(Element_to_sort).Value))
Return xdoc
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
End Function
但我得到的輸出排序的功能是完全縮進:
<!--MasterMusik Video Database-->
<Videos>
<Video>
<Name>4 Strings - Let It Rain</Name>
<Genre>Dance</Genre>
<Format>mp4</Format>
<HD>HD</HD>
<Resolution>1920x1080</Resolution>
<Size>129,3</Size>
</Video>
<Video>
<Name>Deadmau5 - I Remember (Live At Roskilde Festival)</Name>
<Genre>Trance</Genre>
<Format>mkv</Format>
<HD>SD</HD>
<Resolution>704x384</Resolution>
<Size>97,99</Size>
</Video>
<Video>
<Name>SKRILLEX & WOLFGANG GARTNER - THE DEVIL's DEN</Name>
<Genre>Techno</Genre>
<Format>mp4</Format>
<HD>HD</HD>
<Resolution>1280x720</Resolution>
<Size>70,57</Size>
</Video>
</Videos>
這是我使用的用法:
Dim xdoc As XDocument = _
XDocument.Load("Videos.xml", LoadOptions.PreserveWhitespace)
xdoc = XML_Sort(xdoc, "Video", "Name")
IO.File.WriteAllText("Sorted Videox.xml", xdoc.ToString)
此時有兩個問題:
輸出是縮進的。
XML的聲明沒有寫入
<?xml version="1.0" encoding="Windows-1252"?>
,我需要手動編寫它。
我該如何解決這兩個問題?
爲了節省您可以簡單地使用['XDocument.Save']的XML(http://msdn.microsoft.com/en-us /library/bb551426.aspx)。這將寫入包含頭部的有效XML('ToString'去除頭部)。 – pescolino
我很想知道爲什麼你需要這種格式的XML。這聽起來像是耗費代碼的問題。 –
@Ian Nelson這是一個文件大小的問題,格式化代碼的文件大小是12 MB而不是20 MB使用「正常」格式,它沒有太大的區別(目前),但最重要的是我如果每個文件/屬性分組在一行中,就可以更好地讀取/找到每個寫在XML內的文件的信息,就像您可以在此問題頂部的XML格式示例中看到的一樣,但在嘗試對丟失的XML元素進行排序後格式化。 PS:對不起,我的英語。 – ElektroStudios