将字符串列表附加到 VB.NET 中的 XML 文件
Append list of strings to XML file in VB.NET
我需要一些帮助来简化工作,如果可能,请不要手动完成。
我有一个字符串列表:
<title>TITLE 1</title>
<title>TITLE 2</title>
<title>TITLE 3</title>
<title>TITLE 4</title>
<title>TITLE 5</title>
ETC...
有1200多个字符串,只是为了让你知道。
我还有一个包含相同数量元素的 XML 文件,每个元素都采用以下格式:
<game id="N">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
我需要做的是在每个 </img>
和 <date>
之前追加每个 <title>
字符串。可以使用 VB.NET 来完成(我不会用 C#/C++ 编写代码),如果可以,有人可以帮我编写代码吗?或者也许有更简单的正则表达式等方法...谢谢!
使用 XElement 和 LINQ。
Dim URI As String = "your path here"
Dim fileXE As XElement
'fileXE = XElement.Load(URI) ' - load XML, uncomment in production
'for testing = remove in production
Dim titls As New List(Of String)
titls.AddRange({"<title>TITLE 1</title>",
"<title>TITLE 2</title>",
"<title>TITLE 3</title>",
"<title>TITLE 4</title>",
"<title>TITLE 5</title>"})
'for testing = remove in production
fileXE = <games>
<game id="A">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
<game id="B">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
<game id="C">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
</games>
'end for testing
'get all img nodes
Dim imgs As IEnumerable(Of XElement) = fileXE...<img>
For Each el As XElement In imgs 'add one string per img
Dim xe As XElement
Try
xe = XElement.Parse(titls(0)) 'get a title
titls.RemoveAt(0) 'remove it
el.AddAfterSelf(xe) 'add it
Catch ex As Exception
Stop
End Try
Next
fileXE.Save(URI) 'save file
Stop
我需要一些帮助来简化工作,如果可能,请不要手动完成。
我有一个字符串列表:
<title>TITLE 1</title>
<title>TITLE 2</title>
<title>TITLE 3</title>
<title>TITLE 4</title>
<title>TITLE 5</title>
ETC...
有1200多个字符串,只是为了让你知道。 我还有一个包含相同数量元素的 XML 文件,每个元素都采用以下格式:
<game id="N">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
我需要做的是在每个 </img>
和 <date>
之前追加每个 <title>
字符串。可以使用 VB.NET 来完成(我不会用 C#/C++ 编写代码),如果可以,有人可以帮我编写代码吗?或者也许有更简单的正则表达式等方法...谢谢!
使用 XElement 和 LINQ。
Dim URI As String = "your path here"
Dim fileXE As XElement
'fileXE = XElement.Load(URI) ' - load XML, uncomment in production
'for testing = remove in production
Dim titls As New List(Of String)
titls.AddRange({"<title>TITLE 1</title>",
"<title>TITLE 2</title>",
"<title>TITLE 3</title>",
"<title>TITLE 4</title>",
"<title>TITLE 5</title>"})
'for testing = remove in production
fileXE = <games>
<game id="A">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
<game id="B">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
<game id="C">
<url>URL</url>
<img>IMG_URL</img>
<date>DATE</date>
<genre>GENRE</genre>
<publisher>PUBLISHER</publisher>
<developer>DEVELOPER</developer>
<platforms>PLATFORMS</platforms>
<vote>VOTE</vote>
<review>REVIEW_URL</review>
<info><![CDATA[INFORMATIONS]]></info>
</game>
</games>
'end for testing
'get all img nodes
Dim imgs As IEnumerable(Of XElement) = fileXE...<img>
For Each el As XElement In imgs 'add one string per img
Dim xe As XElement
Try
xe = XElement.Parse(titls(0)) 'get a title
titls.RemoveAt(0) 'remove it
el.AddAfterSelf(xe) 'add it
Catch ex As Exception
Stop
End Try
Next
fileXE.Save(URI) 'save file
Stop