2017-06-17 3 views
0

Also hier ist meine XML, und ich verstehe, dass die OrderDate, BuyerID und Items childnodes genannt werden, aber wie nennen Sie die Attribute innerhalb der Elemente wie ItemName, Category ect .. Werden sie noch Childnodes genannt? Wenn ja, wie sollen sie heißen?XML Node Naming

<?xml version="1.0" encoding="utf-8" ?> 
<OrderData > 

    <Order OrderID="OR00001"> 
     <OrderDate>26 May 2017</OrderDate> 
     <BuyerID>WCS1810001</BuyerID> 
     <Instructions>Place item carefully</Instructions> 

     <Items ItemID="IT00001"> 
     <ItemName>ASUS Monitor</ItemName> 
     <Description>Best monitor in the world</Description> 
     <Category>Monitor</Category> 
     <Quantities>100</Quantities> 
     <Manufacturer>ASUS</Manufacturer> 
     <UnitPrice>$100.00</UnitPrice> 
     </Items> 
    </Order> 
</OrderData> 
+0

Es hängt von Ihrem Bezugspunkt ab. Gegenstände sind ein Kind der Ordnung. ItemName ist ein Kind von Items und ist ein Nachkomme von Order. – dbasnett

+0

@dbasnett Hmm so lassen Sie uns sagen, wenn ich versuchen würde, die Elemente Attribute zu verarbeiten und normalerweise den Kindknoten zu verarbeiten wäre so, order.BuyerID = node.ChildNodes [1] .InnerText; . Wie würde es für die Items-Attribute aussehen? – randomstudent

+0

Elemente haben ein Attribut, ItemID. Ist es das, worauf du dich beziehst? Ich bin ein VB'er, also weiß ich nicht, wie Sie dieses Attribut bekommen würden. IMO VB ist einfacher bei der Arbeit mit XML. – dbasnett

Antwort

0

Die einzige Attribute, die Sie haben, in XML ausgedrückt, sind Ihre OrderID und ItemID Attribute. Wenn Sie mit XML arbeiten, ist es hilfreich, einfach die XML-Terminologie zu verwenden. Dementsprechend ist alles andere in Ihrem XML ein ** Element **.

Jedes Element, das sich unter einem anderen Element befindet, ist ein untergeordnetes Element dieses Elements.

Elemente sind ein Kindelement von Order und ItemName ist ein untergeordnetes Element von Items.

+0

Sie haben eine OrderID als Attribut von Order FWIW. – dbasnett

0

Warum MS das nicht zu C# hinzugefügt hat, ist mir ein Rätsel. VB scheint besser geeignet zu sein, mit XML IMHO zu arbeiten.

Dim xe As XElement 
    ' to load from a file 
    ' Dim yourpath As String = "your path here" 
    'xe = XElement.Load(yourpath) 

    ' for testing 
    xe = <OrderData> 
      <Order OrderID="OR00001"> 
       <OrderDate>26 May 2017</OrderDate> 
       <BuyerID>WCS1810001</BuyerID> 
       <Instructions>Place item carefully</Instructions> 
       <Items ItemID="IT00001"> 
        <ItemName>ASUS Monitor</ItemName> 
        <Description>Best monitor in the world</Description> 
        <Category>Monitor</Category> 
        <Quantities>100</Quantities> 
        <Manufacturer>ASUS</Manufacturer> 
        <UnitPrice>$100.00</UnitPrice> 
       </Items> 
      </Order> 
     </OrderData> 

    Dim item As XElement 
    'this does not find an item 
    item = (From el In xe...<Items> 
      Where [email protected] = "IT" 
      Select el).FirstOrDefault 

    If item Is Nothing Then Stop 

    'this finds the item 
    item = (From el In xe...<Items> 
      Where [email protected] = "IT00001" 
      Select el).FirstOrDefault 

    'add a new item to the order. an item prototype 
    Dim itmProto As XElement = <Items ItemID=""> 
            <ItemName></ItemName> 
            <Description></Description> 
            <Category></Category> 
            <Quantities></Quantities> 
            <Manufacturer></Manufacturer> 
            <UnitPrice></UnitPrice> 
           </Items> 

    Dim newItem As New XElement(itmProto) 'note that itmProto is not used directly, only as part of New 
    [email protected] = "ITM0042" 
    newItem.<ItemName>.Value = "FOO" 
    newItem.<Description>.Value = "this is a test" 
    'etc 
    xe.<Order>.Last.Add(newItem) 'add to order 

    ' to save file 
    ' xe.Save(yourpath)