浏览 XmlNodeList 中的节点 (vb.net)
Browse through nodes in XmlNodeList (vb.net)
我在文档中找不到如何 "browse" 通过 XmlNodeList 中已有的节点。
鉴于此 XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<tu changedate="20180509T145123Z" creationdate="20180509T145123Z" >
<prop type="aligned">no</prop>
<prop type="x-context">320920</prop>
<tuv xml:lang="en-gb">
<seg>Hello1</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola1</seg>
</tuv>
</tu>
<tu changedate="20180509T145216Z" creationdate="20180509T145216Z" >
<prop type="aligned">no</prop>
<prop type="x-context">325152</prop>
<tuv xml:lang="en-gb">
<seg>Hello2</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola2</seg>
</tuv>
</tu>
</tmx>
我正在尝试 运行 通过每个 /tu 中的不同节点将其加载到数据库。应该很简单,但我在语法上苦苦挣扎。
到目前为止我有这个:
Dim tmxfile As String = "d:\Documents\Desktop\myxml.xml"
Dim xmldoc As New XmlDocument
xmldoc.Load(tmxfile)
Dim nodes As XmlNodeList = xmldoc.DocumentElement.SelectNodes("//tu")
For node = 0 To nodes.Count - 1
Dim x = nodes.Item(node).SelectNodes("/seg")
MsgBox(x.ToString)
Next
End Sub
我想要实现的是在//tu 中显示每个/seg。代码的第一部分很好,就好像我用 innerxml 或 innertext 循环遍历节点我看到 XML 的实际元素,但我正在努力获取这些节点上的指定元素。
有指导吗?
提前致谢!
如果您使用 XDocument instead of XmlDocument, you could use unique VB's feature - XML Literals:
Sub Main()
Dim xml =
<?xml version="1.0" encoding="utf-8"?>
<tmx version="1.4">
<tu changedate="20180509T145123Z" creationdate="20180509T145123Z">
<prop type="aligned">no</prop>
<prop type="x-context">320920</prop>
<tuv xml:lang="en-gb">
<seg>Hello1</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola1</seg>
</tuv>
</tu>
<tu changedate="20180509T145216Z" creationdate="20180509T145216Z">
<prop type="aligned">no</prop>
<prop type="x-context">325152</prop>
<tuv xml:lang="en-gb">
<seg>Hello2</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola2</seg>
</tuv>
</tu>
</tmx>
xml.AddFirst(New XDocumentType("tmx", "SYSTEM", "tmx14.dtd", ""))
' All <tu> elements
Dim tus = xml.<tmx>.<tu>
For Each tu In tus
Dim seg = tu.<tuv>.<seg>
Console.WriteLine(seg.Value)
Next
Console.ReadKey(True)
End Sub
我在文档中找不到如何 "browse" 通过 XmlNodeList 中已有的节点。
鉴于此 XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<tu changedate="20180509T145123Z" creationdate="20180509T145123Z" >
<prop type="aligned">no</prop>
<prop type="x-context">320920</prop>
<tuv xml:lang="en-gb">
<seg>Hello1</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola1</seg>
</tuv>
</tu>
<tu changedate="20180509T145216Z" creationdate="20180509T145216Z" >
<prop type="aligned">no</prop>
<prop type="x-context">325152</prop>
<tuv xml:lang="en-gb">
<seg>Hello2</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola2</seg>
</tuv>
</tu>
</tmx>
我正在尝试 运行 通过每个 /tu 中的不同节点将其加载到数据库。应该很简单,但我在语法上苦苦挣扎。
到目前为止我有这个:
Dim tmxfile As String = "d:\Documents\Desktop\myxml.xml"
Dim xmldoc As New XmlDocument
xmldoc.Load(tmxfile)
Dim nodes As XmlNodeList = xmldoc.DocumentElement.SelectNodes("//tu")
For node = 0 To nodes.Count - 1
Dim x = nodes.Item(node).SelectNodes("/seg")
MsgBox(x.ToString)
Next
End Sub
我想要实现的是在//tu 中显示每个/seg。代码的第一部分很好,就好像我用 innerxml 或 innertext 循环遍历节点我看到 XML 的实际元素,但我正在努力获取这些节点上的指定元素。
有指导吗?
提前致谢!
如果您使用 XDocument instead of XmlDocument, you could use unique VB's feature - XML Literals:
Sub Main()
Dim xml =
<?xml version="1.0" encoding="utf-8"?>
<tmx version="1.4">
<tu changedate="20180509T145123Z" creationdate="20180509T145123Z">
<prop type="aligned">no</prop>
<prop type="x-context">320920</prop>
<tuv xml:lang="en-gb">
<seg>Hello1</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola1</seg>
</tuv>
</tu>
<tu changedate="20180509T145216Z" creationdate="20180509T145216Z">
<prop type="aligned">no</prop>
<prop type="x-context">325152</prop>
<tuv xml:lang="en-gb">
<seg>Hello2</seg>
</tuv>
<tuv xml:lang="es">
<seg>Hola2</seg>
</tuv>
</tu>
</tmx>
xml.AddFirst(New XDocumentType("tmx", "SYSTEM", "tmx14.dtd", ""))
' All <tu> elements
Dim tus = xml.<tmx>.<tu>
For Each tu In tus
Dim seg = tu.<tuv>.<seg>
Console.WriteLine(seg.Value)
Next
Console.ReadKey(True)
End Sub