我正在寻找一种将格式化XML写入控制台或调试输出窗口的方法,该窗口具有自定义的缩进长度。默认的XML文档缩进值似乎是两个空格。我希望将缩进从两个空格(" ")更改为四个(" ")。
发自:
<urlset>
<url>
<loc>/js/lazyload.js</loc>
</url>
</urlset>至:
<urlset>
<url>
<loc>/js/lazyload.js</loc>
</url>
</urlset>我使用:XmlDocument和OuterXml将XML文档的内容转换为字符串。然后解析字符串并使用:Debug.WriteLine(XElement.Parse(XMLDoc.OuterXml).ToString())将其打印到输出窗口。
我的守则:
' Create XML Document
Dim XMLDoc As New XmlDocument
With XMLDoc
' Add Urlset
Dim XMLSchema As XmlElement = .CreateElement("urlset")
.AppendChild(XMLSchema)
' Add URLs
For Each Script In ScriptsList
Dim XMLUrl As XmlElement = .CreateElement("url")
XMLSchema.AppendChild(XMLUrl)
Dim XMLLoc As XmlElement = .CreateElement("loc")
XMLLoc.InnerText = Script
XMLUrl.AppendChild(XMLLoc)
Next
' Write To Output Window
Debug.WriteLine(XElement.Parse(XMLDoc.OuterXml).ToString())
End With我有两个关于解析和缩进行的问题。
XElement解析文档,这是LINQ库的一部分。还有另一种方法来解析使用标准XML库Imports System.Xml的文档吗?注意:我理解LINQ也是图书馆的一部分。(Imports System.Xml.Linq)XmlWriterSettings更改缩进和缩进字符。但是,我似乎必须手动输出每一行:链接到MSDN。我正在寻找一种方法,允许我只提供一个字符串,然后将自动格式化并输出到输出日志。发布于 2020-04-02 17:40:15
您可以使用System.Xml.XmlWriter类,它允许将XmlDocument内容输出到StringBuilder对象,该对象可以在XmlWriter.Create()方法中指定。
XmlWriterSettings类允许指定是否使用缩进,哪个字符生成缩进和缩进的宽度(有多少字符将组成缩进)。
创建XmlDocument之后,添加:
(ChrW(32)是空间字符。你可以用任何其他的。例如,一个点:"."c)
Dim indentWidth As Integer = 4
Dim XMLDoc As New XmlDocument
With XMLDoc
(...)
End With
Dim sb As New StringBuilder()
Dim settings = New XmlWriterSettings() With {
.Indent = True,
.IndentChars = New String(ChrW(32), indentWidth),
.CloseOutput = True
}
Dim writer = XmlWriter.Create(sb, settings)
XMLDoc.WriteTo(writer)
writer.Dispose()
Console.WriteLine(sb.ToString())https://stackoverflow.com/questions/60994415
复制相似问题