循环浏览xml以添加缺少的标记

时间:2015-05-19 19:45:44

标签: xml vb.net tags

我正在处理一个XML文件,该文件包含开始标记,后跟一些带有内部文本的子标记。当再次出现开始标记时,它会执行此操作而没有前一个标记的结束标记。例如,文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<invoice>
    <id>999</id>
    <newRa elem="0">
        <createD>20150519</createD>
        <modD>12345</modD>
    </newRa>
    <total>123.99</total>
<invoice>

我想创建一个使用xPath添加&#34; / invoice&#34;的vb sub。每次出现&#34;发票&#34;。

应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<invoice>
    <id>999</id>
    <newRa elem="0">
        <createD>20150519</createD>
        <modD>12345</modD>
    </newRa>
    <total>123.99</total>
</invoice>
<invoice>
...
...

1 个答案:

答案 0 :(得分:1)

如果文件足够小,可以完整打开,您可以使用:

Dim st As String = My.Computer.FileSystem.ReadAllText("C:\temp\test.xml")
st = st.Replace("</total>", "</total>" & vbCrLf & "</invoice>")
My.Computer.FileSystem.WriteAllText("c:\temp\test.xml", st, False)

如果文件很大,请创建一个读取每一行的流读取器,并使用类似于上面st = st.Replace...行的行来在正确的位置添加附加标记,并将每行附加到新文件。