2014-11-04 84 views
0

使用dom概念进行XML读取的Iam,但我无法正确检索值。使用dom cencepts读取xml

我想用for循环语句

<area id="508" Type="paragraph" visible="1" source_ap="True" invert="False" rotation="0" ignoretext="0"> 
     <pagename><![CDATA[11187_2014_06_14_000002_0004_NFHEZ]]></pagename> 
     <pagenumber>1</pagenumber> 
     <left>603</left> 
     <top>868</top> 
     <right>764</right> 
     <bottom>1132</bottom> 
     <polygon ispolygon="0" noofpoints="0"><![CDATA[]]></polygon> 
    </area> 

以下是完整的示例XML我想要的检索使用FOR循环BELOW部分来重新获得。

<?xml version="1.0" encoding="UTF-8"?> 
    <articles> 
<template istemplate="true" twidth="0" theight="0" uwidth="0" uheight="0" ubottom="0">  </template> 
    <article name="11187_2014_06_14_000002_0004_NFHEZ_00004" id="4"> 
     <articlename><![CDATA[11187_2014_06_14_000002_0004_NFHEZ_00004]]></articlename> 
    <input_pages> 
     <page name="11187_2014_06_14_000002_0004_NFHEZ" number="3"> 
      <pagepdfheight>1125</pagepdfheight> 
     <pagepdfwidth>786</pagepdfwidth> 
     <pagejpgheight>1125</pagejpgheight> 
     <pagejpgwidth>786</pagejpgwidth> 
     <pagejpgresolution>72</pagejpgresolution> 
     <name><![CDATA[11187_2014_06_14_000002_0004_NFHEZ]]></name> 
    <Article_Area>0</Article_Area> 
    <Article_percentage>0</Article_percentage> 
    </page> 
    </input_pages> 
    <NoOfPage>1</NoOfPage> 
    <output_pages> 
    <page number="1" height="0" width="0"/> 
    </output_pages> 
    <read> 
    <area id="508" Type="paragraph" visible="1" source_ap="True" invert="False"   rotation="0" ignoretext="0"> 
     <pagename><![CDATA[11187_2014_06_14_000002_0004_NFHEZ]]></pagename> 
     <pagenumber>1</pagenumber> 
     <left>603</left> 
     <top>868</top> 
     <right>764</right> 
     <bottom>1132</bottom> 
     <polygon ispolygon="0" noofpoints="0"><![CDATA[]]></polygon> 
    </area> 
    <area id="507" Type="paragraph" visible="1" source_ap="True" invert="False" rotation="0" ignoretext="0"> 
     <pagename><![CDATA[11187_2014_06_14_000002_0004_NFHEZ]]></pagename> 
      <pagenumber>1</pagenumber> 
      <left>462</left> 
      <top>868</top> 
      <right>601</right> 
      <bottom>1131</bottom> 
     <polygon ispolygon="0" noofpoints="0"><![CDATA[]]></polygon> 
    </area> 
    </read> 

我的代码是:

Dim doc As New XmlDocument() 
    Dim sValue, sPgName As String 
    Dim sLeft, sTops, sRight, sBottom As String 
    Dim ObjZoneInfo As CZoneInfo 
    Try 
     doc.Load(sFile) 
      If doc.ChildNodes.Item(0).Name = "xml" Then 
      If doc.ChildNodes.Item(1).Name = "articles" Then 
       For i As Integer = 0 To doc.ChildNodes.Item(1).ChildNodes.Count - 1 
        If doc.ChildNodes.Item(2).ChildNodes.Item(i).Name = "article" Then 
         ObjZoneInfo = New CZoneInfo 
         For j As Integer = 0 To doc.ChildNodes.Item(2).ChildNodes.Item(i).ChildNodes.Count - 1 
          sValue = doc.ChildNodes.Item(1).ChildNodes.Item(i).ChildNodes.Item(j).InnerText 


          If doc.ChildNodes.Item(1).ChildNodes.Item(i).ChildNodes.Item(j).Name = "page_name" Then 
           If sProFiles.Contains(sValue) = False Then 
            sProFiles.Add(sValue) 
           End If 
           ObjZoneInfo.PageName = sValue : sPgName = sValue 

回答

0

我明白你所用 “区域” 标签节点只搜索,那么试试这个:

Dim tagAreas as XmlNodeList = doc.GetElementsByTagName("area") 

你可以然后使用For Each循环:

For Each tagArea as XmlElement in tagAreas Then 

'______your code here. If you wanted to retrieve the "area" tag I don't understand the code you posted 

Next 

现在,访问区域节点的属性,你必须使用以下方法:如果你要访问的子节点

Dim area_id as Integer = Integer.parse(tagArea.GetAttribute("id")) 'if you want to obtain id data as integer 
Dim area_type as String = tagArea.GetAttribute("type") 
'so etc___________________ 

Dim area_pagenum as Integer = Integer.parse(tagArea("pagenumber")) 
+0

从上面的代码,我可以接受一切标签,但如何获得低于标签作为单独的价值。 我需要将每个分别设置为“area id,type,可见“ – user2944173 2014-11-04 09:26:48

+0

现在检查,希望它有帮助。 – 2014-11-04 10:43:16