Hi All,
I need a few suggestions. I have the following XML segment:
<LookUp>
<ControlType>CheckBoxGroup</ControlType>
<DBField>LastMedDate</DBField>
<ControlName>cmbGoal1</ControlName>
<Values VALUE="0" BookMark="Goal1Progress"/>
<Values VALUE="1" BookMark="Goal1NoProgress"/>
<Values VALUE="2" BookMark="Goal1NA"/>
</LookUp>
I have code that will read everything except the "Values" elements. Here is
the code:
While reader.Read()
Select Case (reader.NodeType)
Case XmlNodeType.Element
If (reader.Name = "DBField") Then
ReportElement.DBField() = reader.ReadElementString()
End If
If (reader.Name = "BookMark") Then
ReportElement.BookMark = reader.ReadElementString()
End If
If (reader.Name = "ControlName") Then
ReportElement.ControlName = reader.ReadElementString()
End If
If (reader.Name = "ColumnIndex") Then
ReportElement.ColumnIndex = reader.ReadElementString()
End If
If (reader.Name = "ControlType") Then
ReportElement.ControlType = reader.ReadElementString()
End If
If (reader.Name = "Values") Then
ReportElement.AddValue (0, reader.ReadElementString())
End If
case XmlNodeType.EndElement
If (reader.Name = "LookUp") then
al.Add(ReportElement)
ReportElement.Reset()
End If
End Select
End While
I've tried a few different things to get the Values elements such as:
reader.GetAttribute("BookMark")
But it returns "Nothing" in the Command window.
Could someone please let me know how to get the values element. Thanks
Michael 6 1791
I think those nodes would be of type attribute. Put in a case statement to
handle this type in your code.
"Michael" <Mi*****@discussions.microsoft.com> wrote in message
news:8C**********************************@microsof t.com... Hi All, I need a few suggestions. I have the following XML segment: <LookUp> <ControlType>CheckBoxGroup</ControlType> <DBField>LastMedDate</DBField> <ControlName>cmbGoal1</ControlName> <Values VALUE="0" BookMark="Goal1Progress"/> <Values VALUE="1" BookMark="Goal1NoProgress"/> <Values VALUE="2" BookMark="Goal1NA"/> </LookUp> I have code that will read everything except the "Values" elements. Here is the code: While reader.Read() Select Case (reader.NodeType) Case XmlNodeType.Element If (reader.Name = "DBField") Then ReportElement.DBField() = reader.ReadElementString() End If If (reader.Name = "BookMark") Then ReportElement.BookMark = reader.ReadElementString() End If If (reader.Name = "ControlName") Then ReportElement.ControlName = reader.ReadElementString() End If If (reader.Name = "ColumnIndex") Then ReportElement.ColumnIndex = reader.ReadElementString() End If If (reader.Name = "ControlType") Then ReportElement.ControlType = reader.ReadElementString() End If If (reader.Name = "Values") Then ReportElement.AddValue (0, reader.ReadElementString()) End If case XmlNodeType.EndElement If (reader.Name = "LookUp") then al.Add(ReportElement) ReportElement.Reset() End If End Select End While
I've tried a few different things to get the Values elements such as: reader.GetAttribute("BookMark") But it returns "Nothing" in the Command window. Could someone please let me know how to get the values element. Thanks Michael
Thanks for the quick reply. I have another question for you. Do the elements
in the Lookup section always have to be the same. The reason I asked, is that
I originally had a Lookup section that did not have the Values elements at
the start of the file, and when it got to the loopup that had the Values
elements it never showed the Values element. I setup a file with 2 Lockups in
it with all the elements and it sees the Values element (but not with the
Attribute Type). It sees it as a regular Element type, but I can't get at the
data.
I tried your suggestiont, but it never gets to the Attributes section. I
added the following case to the original case statment:
case xmlnodetype.Attribute
If (reader.Name = "Values") Then
ReportElement.AddValue (0, reader.ReadElementString())
End If
I can use Altova XMLSpy and can see all the elements including the Values
elements. Have any suggestions. Thanks
Michael
"Alex Passos" wrote: I think those nodes would be of type attribute. Put in a case statement to handle this type in your code.
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:8C**********************************@microsof t.com... Hi All, I need a few suggestions. I have the following XML segment: <LookUp> <ControlType>CheckBoxGroup</ControlType> <DBField>LastMedDate</DBField> <ControlName>cmbGoal1</ControlName> <Values VALUE="0" BookMark="Goal1Progress"/> <Values VALUE="1" BookMark="Goal1NoProgress"/> <Values VALUE="2" BookMark="Goal1NA"/> </LookUp> I have code that will read everything except the "Values" elements. Here is the code: While reader.Read() Select Case (reader.NodeType) Case XmlNodeType.Element If (reader.Name = "DBField") Then ReportElement.DBField() = reader.ReadElementString() End If If (reader.Name = "BookMark") Then ReportElement.BookMark = reader.ReadElementString() End If If (reader.Name = "ControlName") Then ReportElement.ControlName = reader.ReadElementString() End If If (reader.Name = "ColumnIndex") Then ReportElement.ColumnIndex = reader.ReadElementString() End If If (reader.Name = "ControlType") Then ReportElement.ControlType = reader.ReadElementString() End If If (reader.Name = "Values") Then ReportElement.AddValue (0, reader.ReadElementString()) End If case XmlNodeType.EndElement If (reader.Name = "LookUp") then al.Add(ReportElement) ReportElement.Reset() End If End Select End While
I've tried a few different things to get the Values elements such as: reader.GetAttribute("BookMark") But it returns "Nothing" in the Command window. Could someone please let me know how to get the values element. Thanks Michael
Generally you would want the elements in a hiearchy to be the same because
XML is a data description language, for the purpose of transmitting data
between consumers and producers of data in a universal format. Most times
you will see XML being exported from database systems that describe exactly
tables, rows, and columns; if for example one row contains an extra column
then your database table isn't really a table anymore is it? However if you
have data in "columns" that are "NULL" or empty you can just write out the
tag with empty like:
<somecolumn/>
And it will parse correctly back into a consumer that expects that column,
the value will be "empty".
Alex
"Michael" <Mi*****@discussions.microsoft.com> wrote in message
news:F1**********************************@microsof t.com... Thanks for the quick reply. I have another question for you. Do the elements in the Lookup section always have to be the same. The reason I asked, is that I originally had a Lookup section that did not have the Values elements at the start of the file, and when it got to the loopup that had the Values elements it never showed the Values element. I setup a file with 2 Lockups in it with all the elements and it sees the Values element (but not with the Attribute Type). It sees it as a regular Element type, but I can't get at the data. I tried your suggestiont, but it never gets to the Attributes section. I added the following case to the original case statment: case xmlnodetype.Attribute If (reader.Name = "Values") Then ReportElement.AddValue (0, reader.ReadElementString()) End If I can use Altova XMLSpy and can see all the elements including the Values elements. Have any suggestions. Thanks Michael
"Alex Passos" wrote:
I think those nodes would be of type attribute. Put in a case statement to handle this type in your code.
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:8C**********************************@microsof t.com... > Hi All, > I need a few suggestions. I have the following XML segment: > <LookUp> > <ControlType>CheckBoxGroup</ControlType> > <DBField>LastMedDate</DBField> > <ControlName>cmbGoal1</ControlName> > <Values VALUE="0" BookMark="Goal1Progress"/> > <Values VALUE="1" BookMark="Goal1NoProgress"/> > <Values VALUE="2" BookMark="Goal1NA"/> > </LookUp> > I have code that will read everything except the "Values" elements. > Here > is > the code: > While reader.Read() > Select Case (reader.NodeType) > Case XmlNodeType.Element > If (reader.Name = "DBField") Then > ReportElement.DBField() = reader.ReadElementString() > End If > If (reader.Name = "BookMark") Then > ReportElement.BookMark = reader.ReadElementString() > End If > If (reader.Name = "ControlName") Then > ReportElement.ControlName = reader.ReadElementString() > End If > If (reader.Name = "ColumnIndex") Then > ReportElement.ColumnIndex = reader.ReadElementString() > End If > If (reader.Name = "ControlType") Then > ReportElement.ControlType = reader.ReadElementString() > End If > If (reader.Name = "Values") Then > ReportElement.AddValue (0, reader.ReadElementString()) > End If > case XmlNodeType.EndElement > If (reader.Name = "LookUp") then > al.Add(ReportElement) > ReportElement.Reset() > End If > End Select > End While > > I've tried a few different things to get the Values elements such as: > reader.GetAttribute("BookMark") > But it returns "Nothing" in the Command window. > Could someone please let me know how to get the values element. Thanks > Michael >
Hi Alex,
Thanks again for the quick reply. That will work for me, I can make sure it
stays the same for all the lookups. As a test I did setup the file that
contains two lookups, but I still could not get at the values as described
before. Have any idea what is happening. I found in the docs that
"An Attribute node can have the following child node types: Text and
EntityReference. The Attribute node does not appear as the child node of any
other node type. It is not considered a child node of an Element."
I was wondering if this is the reason I could not see the data. Have any
suggestions. Thanks so much for the help so far.
Thanks
Michael
"Alex Passos" wrote: Generally you would want the elements in a hiearchy to be the same because XML is a data description language, for the purpose of transmitting data between consumers and producers of data in a universal format. Most times you will see XML being exported from database systems that describe exactly tables, rows, and columns; if for example one row contains an extra column then your database table isn't really a table anymore is it? However if you have data in "columns" that are "NULL" or empty you can just write out the tag with empty like:
<somecolumn/>
And it will parse correctly back into a consumer that expects that column, the value will be "empty".
Alex
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:F1**********************************@microsof t.com... Thanks for the quick reply. I have another question for you. Do the elements in the Lookup section always have to be the same. The reason I asked, is that I originally had a Lookup section that did not have the Values elements at the start of the file, and when it got to the loopup that had the Values elements it never showed the Values element. I setup a file with 2 Lockups in it with all the elements and it sees the Values element (but not with the Attribute Type). It sees it as a regular Element type, but I can't get at the data. I tried your suggestiont, but it never gets to the Attributes section. I added the following case to the original case statment: case xmlnodetype.Attribute If (reader.Name = "Values") Then ReportElement.AddValue (0, reader.ReadElementString()) End If I can use Altova XMLSpy and can see all the elements including the Values elements. Have any suggestions. Thanks Michael
"Alex Passos" wrote:
I think those nodes would be of type attribute. Put in a case statement to handle this type in your code.
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:8C**********************************@microsof t.com... > Hi All, > I need a few suggestions. I have the following XML segment: > <LookUp> > <ControlType>CheckBoxGroup</ControlType> > <DBField>LastMedDate</DBField> > <ControlName>cmbGoal1</ControlName> > <Values VALUE="0" BookMark="Goal1Progress"/> > <Values VALUE="1" BookMark="Goal1NoProgress"/> > <Values VALUE="2" BookMark="Goal1NA"/> > </LookUp> > I have code that will read everything except the "Values" elements. > Here > is > the code: > While reader.Read() > Select Case (reader.NodeType) > Case XmlNodeType.Element > If (reader.Name = "DBField") Then > ReportElement.DBField() = reader.ReadElementString() > End If > If (reader.Name = "BookMark") Then > ReportElement.BookMark = reader.ReadElementString() > End If > If (reader.Name = "ControlName") Then > ReportElement.ControlName = reader.ReadElementString() > End If > If (reader.Name = "ColumnIndex") Then > ReportElement.ColumnIndex = reader.ReadElementString() > End If > If (reader.Name = "ControlType") Then > ReportElement.ControlType = reader.ReadElementString() > End If > If (reader.Name = "Values") Then > ReportElement.AddValue (0, reader.ReadElementString()) > End If > case XmlNodeType.EndElement > If (reader.Name = "LookUp") then > al.Add(ReportElement) > ReportElement.Reset() > End If > End Select > End While > > I've tried a few different things to get the Values elements such as: > reader.GetAttribute("BookMark") > But it returns "Nothing" in the Command window. > Could someone please let me know how to get the values element. Thanks > Michael >
Michael, take a look at this short article, it might help you some: http://www.developer.com/net/csharp/article.php/3489611
Alex
"Michael" <Mi*****@discussions.microsoft.com> wrote in message
news:41**********************************@microsof t.com... Hi Alex, Thanks again for the quick reply. That will work for me, I can make sure it stays the same for all the lookups. As a test I did setup the file that contains two lookups, but I still could not get at the values as described before. Have any idea what is happening. I found in the docs that "An Attribute node can have the following child node types: Text and EntityReference. The Attribute node does not appear as the child node of any other node type. It is not considered a child node of an Element." I was wondering if this is the reason I could not see the data. Have any suggestions. Thanks so much for the help so far. Thanks Michael
"Alex Passos" wrote:
Generally you would want the elements in a hiearchy to be the same because XML is a data description language, for the purpose of transmitting data between consumers and producers of data in a universal format. Most times you will see XML being exported from database systems that describe exactly tables, rows, and columns; if for example one row contains an extra column then your database table isn't really a table anymore is it? However if you have data in "columns" that are "NULL" or empty you can just write out the tag with empty like:
<somecolumn/>
And it will parse correctly back into a consumer that expects that column, the value will be "empty".
Alex
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:F1**********************************@microsof t.com... > Thanks for the quick reply. I have another question for you. Do the > elements > in the Lookup section always have to be the same. The reason I asked, > is > that > I originally had a Lookup section that did not have the Values elements > at > the start of the file, and when it got to the loopup that had the > Values > elements it never showed the Values element. I setup a file with 2 > Lockups > in > it with all the elements and it sees the Values element (but not with > the > Attribute Type). It sees it as a regular Element type, but I can't get > at > the > data. > I tried your suggestiont, but it never gets to the Attributes section. > I > added the following case to the original case statment: > case xmlnodetype.Attribute > If (reader.Name = "Values") Then > ReportElement.AddValue (0, reader.ReadElementString()) > End If > I can use Altova XMLSpy and can see all the elements including the > Values > elements. Have any suggestions. Thanks > Michael > > > > > "Alex Passos" wrote: > >> I think those nodes would be of type attribute. Put in a case >> statement >> to >> handle this type in your code. >> >> "Michael" <Mi*****@discussions.microsoft.com> wrote in message >> news:8C**********************************@microsof t.com... >> > Hi All, >> > I need a few suggestions. I have the following XML segment: >> > <LookUp> >> > <ControlType>CheckBoxGroup</ControlType> >> > <DBField>LastMedDate</DBField> >> > <ControlName>cmbGoal1</ControlName> >> > <Values VALUE="0" BookMark="Goal1Progress"/> >> > <Values VALUE="1" BookMark="Goal1NoProgress"/> >> > <Values VALUE="2" BookMark="Goal1NA"/> >> > </LookUp> >> > I have code that will read everything except the "Values" elements. >> > Here >> > is >> > the code: >> > While reader.Read() >> > Select Case (reader.NodeType) >> > Case XmlNodeType.Element >> > If (reader.Name = "DBField") Then >> > ReportElement.DBField() = reader.ReadElementString() >> > End If >> > If (reader.Name = "BookMark") Then >> > ReportElement.BookMark = reader.ReadElementString() >> > End If >> > If (reader.Name = "ControlName") Then >> > ReportElement.ControlName = reader.ReadElementString() >> > End If >> > If (reader.Name = "ColumnIndex") Then >> > ReportElement.ColumnIndex = reader.ReadElementString() >> > End If >> > If (reader.Name = "ControlType") Then >> > ReportElement.ControlType = reader.ReadElementString() >> > End If >> > If (reader.Name = "Values") Then >> > ReportElement.AddValue (0, reader.ReadElementString()) >> > End If >> > case XmlNodeType.EndElement >> > If (reader.Name = "LookUp") then >> > al.Add(ReportElement) >> > ReportElement.Reset() >> > End If >> > End Select >> > End While >> > >> > I've tried a few different things to get the Values elements such >> > as: >> > reader.GetAttribute("BookMark") >> > But it returns "Nothing" in the Command window. >> > Could someone please let me know how to get the values element. >> > Thanks >> > Michael >> > >> >> >>
Hi Alex,
Thanks for all the help. In a book I just got (Programming Microsoft Visual
Basic .NET) I found the answer. The Values element will be found under the
Element Nodetype, but I had to use the MoveToNextAttribute function to move
to the Attribute. I included a section of the Case statement.
If (reader.Name = "Values") Then
dim isValueAdded as Boolean = False
if reader.HasAttributes then
Do while reader.MoveToNextAttribute ()
if Reader.Name = "VALUE" then
lValue = Reader.Value
End If
if Reader.Name = "BookMark" then
lBookmark = Reader.Value
isValueAdded = True
End If
Loop
End If
if isValueAdded = True then
ReportElement.AddValue (lValue, lBookmark)
end if
Thanks again for all the help.
Michael
"Alex Passos" wrote: Michael, take a look at this short article, it might help you some:
http://www.developer.com/net/csharp/article.php/3489611
Alex
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:41**********************************@microsof t.com... Hi Alex, Thanks again for the quick reply. That will work for me, I can make sure it stays the same for all the lookups. As a test I did setup the file that contains two lookups, but I still could not get at the values as described before. Have any idea what is happening. I found in the docs that "An Attribute node can have the following child node types: Text and EntityReference. The Attribute node does not appear as the child node of any other node type. It is not considered a child node of an Element." I was wondering if this is the reason I could not see the data. Have any suggestions. Thanks so much for the help so far. Thanks Michael
"Alex Passos" wrote:
Generally you would want the elements in a hiearchy to be the same because XML is a data description language, for the purpose of transmitting data between consumers and producers of data in a universal format. Most times you will see XML being exported from database systems that describe exactly tables, rows, and columns; if for example one row contains an extra column then your database table isn't really a table anymore is it? However if you have data in "columns" that are "NULL" or empty you can just write out the tag with empty like:
<somecolumn/>
And it will parse correctly back into a consumer that expects that column, the value will be "empty".
Alex
"Michael" <Mi*****@discussions.microsoft.com> wrote in message news:F1**********************************@microsof t.com... > Thanks for the quick reply. I have another question for you. Do the > elements > in the Lookup section always have to be the same. The reason I asked, > is > that > I originally had a Lookup section that did not have the Values elements > at > the start of the file, and when it got to the loopup that had the > Values > elements it never showed the Values element. I setup a file with 2 > Lockups > in > it with all the elements and it sees the Values element (but not with > the > Attribute Type). It sees it as a regular Element type, but I can't get > at > the > data. > I tried your suggestiont, but it never gets to the Attributes section. > I > added the following case to the original case statment: > case xmlnodetype.Attribute > If (reader.Name = "Values") Then > ReportElement.AddValue (0, reader.ReadElementString()) > End If > I can use Altova XMLSpy and can see all the elements including the > Values > elements. Have any suggestions. Thanks > Michael > > > > > "Alex Passos" wrote: > >> I think those nodes would be of type attribute. Put in a case >> statement >> to >> handle this type in your code. >> >> "Michael" <Mi*****@discussions.microsoft.com> wrote in message >> news:8C**********************************@microsof t.com... >> > Hi All, >> > I need a few suggestions. I have the following XML segment: >> > <LookUp> >> > <ControlType>CheckBoxGroup</ControlType> >> > <DBField>LastMedDate</DBField> >> > <ControlName>cmbGoal1</ControlName> >> > <Values VALUE="0" BookMark="Goal1Progress"/> >> > <Values VALUE="1" BookMark="Goal1NoProgress"/> >> > <Values VALUE="2" BookMark="Goal1NA"/> >> > </LookUp> >> > I have code that will read everything except the "Values" elements. >> > Here >> > is >> > the code: >> > While reader.Read() >> > Select Case (reader.NodeType) >> > Case XmlNodeType.Element >> > If (reader.Name = "DBField") Then >> > ReportElement.DBField() = reader.ReadElementString() >> > End If >> > If (reader.Name = "BookMark") Then >> > ReportElement.BookMark = reader.ReadElementString() >> > End If >> > If (reader.Name = "ControlName") Then >> > ReportElement.ControlName = reader.ReadElementString() >> > End If >> > If (reader.Name = "ColumnIndex") Then >> > ReportElement.ColumnIndex = reader.ReadElementString() >> > End If >> > If (reader.Name = "ControlType") Then >> > ReportElement.ControlType = reader.ReadElementString() >> > End If >> > If (reader.Name = "Values") Then >> > ReportElement.AddValue (0, reader.ReadElementString()) >> > End If >> > case XmlNodeType.EndElement >> > If (reader.Name = "LookUp") then >> > al.Add(ReportElement) >> > ReportElement.Reset() >> > End If >> > End Select >> > End While >> > >> > I've tried a few different things to get the Values elements such >> > as: >> > reader.GetAttribute("BookMark") >> > But it returns "Nothing" in the Command window. >> > Could someone please let me know how to get the values element. >> > Thanks >> > Michael >> > >> >> >> This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: kinryuu |
last post by:
I am setting up an XmlReader in .NET 2.0 beta2. I'm trying to migrate
away from the now deprecated XmlValidatingReader. The XML files I'm
reading have an in-line schema. I'm noticing several...
|
by: CGuy |
last post by:
Hi,
I am using an XmlTextReader to read an xml file. It may happen that the
file is present in the disk, but it may be empty (0 bytes). I would like to
find out whether the xml file contains a...
|
by: |
last post by:
How do I read the attributes of this XML? I have a page with text boxes that
i want to read
these values in. notice there are 2 Parameter tags with the same attributes.
Code would help
...
|
by: Ben |
last post by:
Hi,
I'm just moving to VB.NET and I'm trying to load a recordset intoan XMLReader and loop through the records. When I use the.ReadElementString() method to get the next 'record' if it hasreached...
|
by: Developer |
last post by:
Hello,
I'm experimenting with and XmlTextReader sample, and don't understand how
the attributes are being processed.
Here's the input:
<xsd:element name="AA" type="BB"...
|
by: Michael Malinak |
last post by:
Since XmlWriter offers so many nice options for formatting, I thought it
would be nice to read in via XmlReader, and write back out via XmlWriter.
It might be overkill, but I'd also like to be able...
|
by: Jeff Calico |
last post by:
Hello all. I am implementing a SAX filter to strip a bunch of unneeded
elements out of a large XML file. I found a book "Java & XML" by Brett
McLaughlin, and an interesting article by him wich...
|
by: Gary Stephenson |
last post by:
I am endeavouring to use .NET v2.0 XML facilities to "roundtrip" reading and
writing XML documents - i.e. to end up with _exactly_ what I started with,
but I can't seem to figure out how to get an...
|
by: gpet44 |
last post by:
Hi,
I have a problem receiving XML over a NetworkStream in C# .Net 2.0/3.0. I'm creating an XMLReader from the stream. I get the following exception when the XmlReaderreads from the stream as...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
|
by: ryjfgjl |
last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
| |