我想在例如<product>
和</product>
之间拆分字符串。字符串中可能有几千种产品。
示例:
<Product xmlns="">
<Code>021-05402</Code>
</Product>
<Product xmlns="">
<Code>022-05402</Code>
</Product>
我尝试了一个xml解析器,但xml格式不正确并且出现了很多错误。
答案 0 :(得分:1)
首先,我会发现为什么 XML格式错误,因为这将首先解决您的问题,然后您可以非常轻松地解析XML字符串。正如评论HTML Agility Pack中所建议的那样,可能是一种前进的方式:
这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......)。它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。
或者,过去我不得不求助的东西,你可以循环使用字符串并使用IndexOf和SubString检索值:
if(isset($_POST['send']))
Dim xml As String = "<Product xmlns=""> <Code>021-05402</Code> </Product> <Product xmlns=""> <Code>022-05402</Code> </Product>"
Dim startPos As Integer = 0
Dim endPos As Integer = 0
Dim codes As New List(Of String)
While True
startPos = xml.IndexOf("<Code>", endPos)
endPos = xml.IndexOf("</Code>", endPos) + 7 '7 is the length of </Code> and I want to include this
If startPos > 0 Then
Try
'would be worth implementing a check that the indexes aren't going to cause a problem
codes.Add(xml.Substring(startPos, endPos - startPos))
Catch ex As ArgumentOutOfRangeException
'Handle the exception
End Try
Else
Exit While
End If
End While
将根据您的示例XML包含两个项目:
codes