2013-05-21 36 views
-2

我有以下的XML格式,这实际上是谷歌地图KML文件..迭代通过每一个XML节点和追加节点和值串

 <kml xmlns="http://www.opengis.net/kml/2.2"> 
      <Document> 
      <Name>TestDoc</Name> 
      <Style id="Style1"> 
       <PolyStyle> 
       <fill>0</fill> 
       </PolyStyle> 
      </Style> 
      <Folder> 
       <Name>Folder1</Name> 
       <Placemark> 
       <Name>Placemark1Folder1</Name> 
       <LookAt> 
        <longitude>-122.0839597145766</longitude> 
        <latitude>37.42222904525232</latitude> 
       </LookAt> 
       </Placemark> 
       <Placemark> 
       <Name>Placemark2Folder1</Name> 
       <LookAt> 
        <longitude>-101.083959</longitude> 
        <latitude>26.422</latitude> 
       </LookAt> 
       </Placemark> 
      </Folder> 
      <Folder> 
       <Name>Folder2</Name> 
       <Placemark> 
       <Name>Placemark1Folder2</Name> 
       <LookAt> 
        <longitude>-96.566556</longitude> 
        <latitude>14.422</latitude> 
       </LookAt> 
       </Placemark> 
      </Folder> 
      </Document> 
     </kml> 

我想Concat的XML字符串变量,直到它找到<Folder>节点

因此输出字符串将是:

""<kml xmlns="http://www.opengis.net/kml/2.2"><Document><Name>TestDoc</Name><Style id="Style1"><PolyStyle><fill>0</fill></PolyStyle> </Style>" 

我是XML新手..Plz帮助

+0

你到底想用.. [这](发生什么事http://stackoverflow.com/questions/16646160/splitting-xml-document - 按节点)? – matzone

+0

[链接](http://stackoverflow.com/questions/16646160/splitting-xml-document-according-to-node)在这个链接...你已经使输入xml作为字符串..thats不是我的要求..我应该把输入XML作为XML格式不是一个字符串..所以我没有测试你的代码,因此改变我的逻辑来完成这项任务.. –

+0

你的问题没有意义。 “遍历每个节点,直到它找到节点并向节点添加值”..什么? – James

回答

3

好吧,我知道了......这是我的解决方案

Public Sub ConcatXmlToString() 
     Dim xmldoc As XmlDocument = New XmlDocument() 
     '================================ 
     'Hard Coded 
     '================================ 
     Dim ConcatString As String = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & "encoding=" & Chr(34) & "UTF-8" & Chr(34) & "?><kml xmlns=" & Chr(34) & "http://www.opengis.net/kml/2.2" & Chr(34) & ">" 

     xmldoc.Load("E:\A01c.kml") 
     Dim DocumentNodeList As XmlNodeList = xmldoc.GetElementsByTagName("Document") 
     For Each DocumentNode As XmlNode In DocumentNodeList 
      'xmldoc.ParentNode.ParentNode.RemoveChild(childnode) 
      Dim ChildNodeList As XmlNodeList = DocumentNode.ChildNodes 
      For Each ChildNode As XmlNode In ChildNodeList 
       If ChildNode.Name <> "Folder" Then 
        ConcatString = ConcatString & ChildNode.OuterXml.Replace("xmlns=""http://www.opengis.net/kml/2.2""", "") 
       End If 
      Next 
     Next 

     ConcatString = ConcatString & "</Document></kml>" 

     Dim str As String = xmldoc.InnerText 

    End Sub 
+0

这是关于什么?发现intresting,但不明白。你能解释我所有这一切吗? – Binod

+1

@Binod它实际上是根据地标分割一个kml文件的谷歌地图... –

+0

谢谢。我可以获得示例代码吗? :p – Binod