我正在尝试浏览存储在使用visual basic编码的应用程序中的xml文件中的数据,使用wpf构建,使用.net framework 4.0在Windows 7上运行 我搜索了很多,我在这个论坛(和其他人)上经历了很多帖子,但我迷路了。我无法找到合适的文档。我希望有人能在这里给我一个答案。 这是我的xml架构:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Changes">
<xs:complexType>
<xs:sequence>
<xs:element ref="change" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="change">
<xs:complexType>
<xs:sequence>
<xs:element name="engine" type="xs:string"/>
<xs:element name="reference" type="xs:string"/>
<xs:element name="code" type="xs:string"/>
<xs:element name="number" type="xs:integer"/>
<xs:element name="startdate" type="xs:date"/>
<xs:element name="stopdate" type="xs:date"/>
<xs:element name="location" type="xs:string"/>
<xs:element name="carracteristic" type="xs:string"/>
<xs:element name="tolmin" type="xs:string"/>
<xs:element name="tolmax" type="xs:string"/>
<xs:element name="correctiveaction" type="xs:string"/>
<xs:element name="correctiveactiondeadline" type="xs:date"/>
<xs:element name="duplicate" type="xs:boolean"/>
<xs:element name="type" type="xs:string"/>
<xs:element name="justification " type="xs:boolean"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="nature" type="xs:string"/>
<xs:element name="ongoingactions" type="xs:string"/>
<xs:element name="actor" type="xs:string"/>
<xs:element name="timelimit" type="xs:string"/>
<xs:element name="justif" type="xs:string"/>
<xs:element name="newstatus" type="xs:string"/>
<xs:element name="linktomap" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我想要做的是获取特定change
的{{1}}列表,其中reference
和startdate
之间包含当前日期。< / p>
到目前为止,我已经设法为我的参考文件获取了stopdate
的列表。
change
但我无法进一步发展。
1如何才能获得与今天相关的更改(Function applicableChanges(ByVal ref As String, ByVal changesfilepath As String) As List(Of change)
Dim xmlchange As New XmlDocument
xmlchange.Load(changesfilepath)
Dim changeList As XmlNodeList
changeList = root.SelectNodes("change[reference='" & ref & "']")
End function
)?
我的第二个问题是如何浏览提取的数据。
reference=ref and Now()>startdate and Now()<stopdate
是XmlNodeList。如何获取此列表中每项更改的属性值(例如changeList
,number
,...)。
必须有一种循环遍历此XmlNodeList的方法,但我找不到它。
或者我认为可能是一个好主意,是创建一个vb类code
,它包含与我的xml元素相同的属性,并以某种方式将我的XmlNodeList转换为`List(Of change)。如果我理解正确,我认为这可能是反序列化。
2浏览提取的数据的最佳方法是什么?以及如何?
提前感谢您的帮助。
答案 0 :(得分:0)
Mr.Gadget指的是将您的架构转换为一组类的Xsd.exe工具。然后,您可以将XML反序列化为此Object层次结构,并根据需要对数据进行任何使用。
在我当前的机器上,它可以在以下位置找到:C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools \ x64
你应该可以在你的身上找到它。
此链接:https://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx 将帮助您了解如何使用它。
答案 1 :(得分:0)
感谢您的回答。我没有花时间去探索Xsd我自己构建了可序列化的类。如果我有时间的话,我会在后脑中记住这一点。
然而,我使用反序列化和Linq(我不知道它)。它很棒。 Linq非常强大。
由于