Как прочитать дочерние узлы в другой узел? - PullRequest
0 голосов
/ 21 мая 2019

Необходимо читать дочерние узлы из XML-файла (форматированный и Excel.Sheet xmlns), но с использованием свойства индекса, а не дочернего номера

Мы проверяем, чтобы прочитать аналогично содержимому файла RSS / XML, используя объект с MSXML2.FreeThreadedDOMDocument,Итак, наконец, мы решили соединитель с MSXML2.DOMDocument.6.0 Затем установили некоторые свойства как Язык и Пространства имен.С его помощью можно читать непосредственно объект objXML.selectedNodes, знать, сколько элементов с помощью objXML.Length, а затем с помощью простого для каждого узла читать отдельные группы.Затем используйте текст Node.ChilNodes (nn) .text для извлечения данных, которые необходимо обработать

Пример XML-данных для чтения

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office">
 <Styles>...</Styles>
  <Worksheet ss:Name="movimientos">
   <Table>
    <Row ss:Index="1">
     <Cell ss:Index="1" ss:StyleID="s1">
      <Data ss:Type="String">Fecha operación</Data>
     </Cell>
     <Cell ss:Index="2" ss:StyleID="s1">
      <Data ss:Type="String">Fecha valoración</Data>
     </Cell>
     <Cell ss:Index="3" ss:StyleID="s1">
      <Data ss:Type="String">Cod. oper.</Data>
     </Cell>
     <Cell ss:Index="4" ss:StyleID="s1">
      <Data ss:Type="String">Concepto</Data>
     </Cell>
     <Cell ss:Index="5" ss:StyleID="s1">
      <Data ss:Type="String">Importe</Data>
     </Cell>
     <Cell ss:Index="6" ss:StyleID="s1">
      <Data ss:Type="String">Saldo</Data>
     </Cell>
     <Cell ss:Index="7" ss:StyleID="s1">
       <Data ss:Type="String">N. Documento</Data>
     </Cell>
     <Cell ss:Index="8" ss:StyleID="s1">
      <Data ss:Type="String">Referencia 1</Data>
     </Cell>
     <Cell ss:Index="9" ss:StyleID="s1">
      <Data ss:Type="String">Referencia 2</Data>
     </Cell>
</Row>

и т. Д.

Используйте этодля чтения в ASP Classic

    Set oXMLDoc = Server.CreateObject("MSXML2.DOMDocument.6.0")
oXMLDoc.setProperty "SelectionLanguage", "XPath"
oXMLDoc.setProperty "SelectionNamespaces", "xmlns:myns='urn:schemas-microsoft-com:office:spreadsheet' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet' xmlns:html='http://www.w3.org/TR/REC-html40' xmlns:msxsl='urn:schemas-microsoft-com:xslt' xmlns:user='urn:my-scripts'"
oXMLDoc.async = False
oXMLDoc.setProperty "ServerHTTPRequest", True
oXMLDoc.Load  Server.MapPath("/bsch.xls")
Set oXMLRows = oXMLDoc.selectNodes("/myns:Workbook/myns:Worksheet/myns:Table/myns:Row")
For Each Node In oXMLRows
 Response.Write "Entries=" & Node.childNodes.length
 Response.Write "" & Node.childNodes(0).text & "<br/>" & Node.childNodes(1).text & Node.childNodes(2).text & Node.childNodes(3).text  & Node.childNodes(4).text & Node.childNodes(5).text & Node.childNodes(6).text & Node.childNodes(7).text & Node.childNodes(8).text
 Response.Write "FULL STRING CONTENT =" & Node.text & "<br/>"
Next

Изменение фактического:

Node.childNodes(n).text 

для чтения каждого дочернего элемента, для чтения используется свойство INDEX, например Node.ChildNodes("@index='1'").text (на самом деле это не выполняется)

Любой URL, у которого есть документация по XML и ASP, «как использовать», будет благодарен

...