如何在vb.net

时间:2017-01-17 15:39:58

标签: .net vb.net

我想在例如<product></product>之间拆分字符串。字符串中可能有几千种产品。

示例:

<Product xmlns="">
    <Code>021-05402</Code>
</Product>
<Product xmlns="">
    <Code>022-05402</Code>
</Product>

我尝试了一个xml解析器,但xml格式不正确并且出现了很多错误。

1 个答案:

答案 0 :(得分:1)

首先,我会发现为什么 XML格式错误,因为这将首先解决您的问题,然后您可以非常轻松地解析XML字符串。正如评论HTML Agility Pack中所建议的那样,可能是一种前进的方式:

  

这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......)。它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。

或者,过去我不得不求助的东西,你可以循环使用字符串并使用IndexOfSubString检索值:

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