循环 xml 以添加缺少的标签
Cycle through xml to add missing tag
我正在处理一个 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>
我想创建一个 vb 子程序,它使用 xPath 在每次出现 "invoice" 时添加一个“/invoice”标签。
应该是这样的:
<?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>
...
...
如果文件小到可以完整打开,可以使用:
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)
如果文件很大,创建一个读取每一行的streamreader,并使用类似于上面st = st.Replace...
行的一行来在正确的位置添加额外的标签,并将每一行附加到一个新的文件。
我正在处理一个 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>
我想创建一个 vb 子程序,它使用 xPath 在每次出现 "invoice" 时添加一个“/invoice”标签。
应该是这样的:
<?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>
...
...
如果文件小到可以完整打开,可以使用:
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)
如果文件很大,创建一个读取每一行的streamreader,并使用类似于上面st = st.Replace...
行的一行来在正确的位置添加额外的标签,并将每一行附加到一个新的文件。