3 messaggi dal 06 agosto 2018
Buongiorno a tutti,
sono nuovo nel trattare i dati da file XML e finchè questi sono con una semplice gerarchia non ho problemi ad esempio:

<users>
  <user>
   <login>
     <cognome>Rossi</cognome>
     <nome> Mario</nome>
   </login>
  </user>
</users>


Adesso mi sono imbattuto in un file xml che richiama un file xsd che a sua volta richiama altri file xsd.
Riporto parte di questo file:

<MTConnectStreams xmlns:m="urn:mtconnect.org:MTConnectStreams:1.3" xmlns="urn:mtconnect.org:MTConnectStreams:1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:mazakusa.com:MazakStreams:1.3" xsi:schemaLocation="urn:mazakusa.com:MazakStreams:1.3 /schemas/MazakStreams_1.3.xsd">
  <Header creationTime="2019-01-22T14:45:44Z" sender="MAZATROL-PC" instanceId="1548088577" version="1.3.0.17" bufferSize="131072" nextSequence="69340" firstSequence="1" lastSequence="69339"/>
  <Streams>
    <DeviceStream name="Mazak" uuid="Mazak">
      <ComponentStream component="Axes" name="base" componentId="a">
        <Samples>
          <AngularVelocity dataItemId="cf" timestamp="2019-01-22T13:35:02.744697Z" name="Cfrt" sequence="68529">0</AngularVelocity>
          <Load dataItemId="cl" timestamp="2019-01-22T14:45:42.930668Z" name="Cload" sequence="69339">9</Load>
          <Angle dataItemId="cpos" timestamp="2019-01-21T16:36:17.792677Z" name="Cdeg" sequence="23" subType="ACTUAL">UNAVAILABLE</Angle>
          <RotaryVelocity dataItemId="cs" timestamp="2019-01-22T13:31:41.535704Z" name="Srpm" sequence="68444" subType="ACTUAL">0</RotaryVelocity>
          <Temperature dataItemId="ctemp" timestamp="2019-01-22T14:35:24.135216Z" name="Stemp" sequence="69256">24</Temperature>
          <Load dataItemId="sl" timestamp="2019-01-22T13:31:41.535704Z" name="Sload" sequence="68445">0</Load>
        </Samples>
        </ComponentStream>
    </DeviceStream>
  </Streams>
</MTConnectStreams>


Ho aperto il file xsd su Visual Studio e vedendo la gerarchia mi indica ad esempio in AngularVelocity @sequence.

Qualcunoi può gentilmente aiutarmi indicandomi come riportare ad esempio @sequence in una gridview con codice VbNet?

Grazie a tutti
316 messaggi dal 05 novembre 2012
Ciao,

ma la griglia che vuoi ottenere che dati deve riportare? riesci a fare qualche esempio?

Guarda qui se fa al caso tuo.

/Ciao

Alessio
3 messaggi dal 06 agosto 2018
Ciao Alessio,
grazie per la tua risposta.
Provo a riportarti parte del codice così magari potrai aiutarmi

Ho fatto delle prove eliminando la parte superiore del file XML che contiene il riferimento xsd e ho creato questa pagina Test.aspx che mi estrae i dati Temperature e Temperature/@name

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField HeaderText="Temperature Nome">
                    <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# XPath("Temperature/@name")%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Temperature">
                    <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# XPath("Temperature") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>


con questa pagina Test.aspx.vb

Imports System
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath

Public Class Test
    Inherits System.Web.UI.Page

    Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
        End If



        Dim xds As XmlDataSource = New XmlDataSource()
        xds.XPath = "/MTConnectStreams/Streams/DeviceStream/ComponentStream/Samples"
        xds.DataFile = (Server.MapPath("~/Test.xml"))

        GridView1.DataSource = xds
        GridView1.DataBind()

    End Sub
End Class


che estrae i dati dal file Test.xml

<MTConnectStreams>
  <Header creationTime="2019-01-22T14:45:44Z" sender="MAZATROL-PC" instanceId="1548088577" version="1.3.0.17" bufferSize="131072" nextSequence="69340" firstSequence="1" lastSequence="69339"/>
  <Streams>
    <DeviceStream name="Mazak" uuid="Mazak">
      <ComponentStream component="Axes" name="base" componentId="a">
        <Samples>
          <AngularVelocity dataItemId="cf" timestamp="2019-01-22T13:35:02.744697Z" name="Cfrt" sequence="68529">0</AngularVelocity>
          <Load dataItemId="cl" timestamp="2019-01-22T14:45:42.930668Z" name="Cload" sequence="69339">9</Load>
          <Angle dataItemId="cpos" timestamp="2019-01-21T16:36:17.792677Z" name="Cdeg" sequence="23" subType="ACTUAL">UNAVAILABLE</Angle>
          <RotaryVelocity dataItemId="cs" timestamp="2019-01-22T13:31:41.535704Z" name="Srpm" sequence="68444" subType="ACTUAL">0</RotaryVelocity>
          <Temperature dataItemId="ctemp" timestamp="2019-01-22T14:35:24.135216Z" name="Stemp" sequence="69256">24</Temperature>
          <Load dataItemId="sl" timestamp="2019-01-22T13:31:41.535704Z" name="Sload" sequence="68445">0</Load>
        </Samples>
      </ComponentStream>
    </DeviceStream>
  </Streams>
</MTConnectStreams>


E fin quì tutto bene.
Al momento che nel file Test.xml aggiungo la stringa che contiene il file xsd non visualizzo più nulla.
Ho fatto diverse prove ma non riesco a visualizzare i dati perchè il nodo <MTConnectStreams non è più riconosciuto

Come riportato nel messaggio originale parte del file xml che importo è il seguente:

<MTConnectStreams xmlns:m="urn:mtconnect.org:MTConnectStreams:1.3" xmlns="urn:mtconnect.org:MTConnectStreams:1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:mazakusa.com:MazakStreams:1.3" xsi:schemaLocation="urn:mazakusa.com:MazakStreams:1.3 /schemas/MazakStreams_1.3.xsd">
  <Header creationTime="2019-01-22T14:45:44Z" sender="MAZATROL-PC" instanceId="1548088577" version="1.3.0.17" bufferSize="131072" nextSequence="69340" firstSequence="1" lastSequence="69339"/>
  <Streams>
    <DeviceStream name="Mazak" uuid="Mazak">
      <ComponentStream component="Axes" name="base" componentId="a">
        <Samples>
          <AngularVelocity dataItemId="cf" timestamp="2019-01-22T13:35:02.744697Z" name="Cfrt" sequence="68529">0</AngularVelocity>
          <Load dataItemId="cl" timestamp="2019-01-22T14:45:42.930668Z" name="Cload" sequence="69339">9</Load>
          <Angle dataItemId="cpos" timestamp="2019-01-21T16:36:17.792677Z" name="Cdeg" sequence="23" subType="ACTUAL">UNAVAILABLE</Angle>
          <RotaryVelocity dataItemId="cs" timestamp="2019-01-22T13:31:41.535704Z" name="Srpm" sequence="68444" subType="ACTUAL">0</RotaryVelocity>
          <Temperature dataItemId="ctemp" timestamp="2019-01-22T14:35:24.135216Z" name="Stemp" sequence="69256">24</Temperature>
          <Load dataItemId="sl" timestamp="2019-01-22T13:31:41.535704Z" name="Sload" sequence="68445">0</Load>
        </Samples>
        </ComponentStream>
    </DeviceStream>
  </Streams>
</MTConnectStreams>


Puoi aiutarmi o ti serve anche il file xsd?
Grazie
Modificato da ale2570 il 05 marzo 2019 11:56 -
316 messaggi dal 05 novembre 2012
Ciao,

ciao prova a guardare qui ... nel thread il contesto è differente ma (secondo me) il problema di fondo è lo stesso e riguarda xpath.

Facci sapere

/Ciao

Alessio
3 messaggi dal 06 agosto 2018
No nulla anche perchè io non ho un file xsl

Non riesco a visualizzare nulla

L'unica cosa che riesco ad estrapolare sono i dati dentro l'header tipo sender che mi restituisce MAZATROL-PC per il resto nulla

<Header creationTime="2019-01-22T14:45:44Z" sender="MAZATROL-PC" instanceId="1548088577" version="1.3.0.17" bufferSize="131072" nextSequence="69340" firstSequence="1" lastSequence="69339"/>


Dai test che ho effettuato ho capito trattarsi di un problema del nodo <MTConnectStreams xmlns:m ........ > che non riesce ad essere interpretato

<MTConnectStreams xmlns:m="urn:mtconnect.org:MTConnectStreams:1.3" xmlns="urn:mtconnect.org:MTConnectStreams:1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:mazakusa.com:MazakStreams:1.3" xsi:schemaLocation="urn:mazakusa.com:MazakStreams:1.3 /schemas/MazakStreams_1.3.xsd">


Se hai altre idee sono quì.
Grazie
316 messaggi dal 05 novembre 2012
Ciao,

nel link che ti ho segnalato non devi concentrarti sul discorso xslt, come ti dicevo il contesto è differente ...bensì sul discorso query Xpath

per esempio se al posto di "MTConnectStreams" utilizzi "xsi:MTConnectStreams" cambia qualcosa?

/Ciao

Alessio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.