Member 12446398 Ответов: 0

Значение узла Xml subchild в VB.NET


Я пытаюсь прочитать XML-файл, но при чтении дочернего узла я сталкиваюсь с трудностями. В прилагаемом ниже XML - файле любезно подскажите мне, как прочитать дочерний узел "UoM" и "количество" плотности?

Я попытался использовать цикл foreach так же, как элементы для плотности, но это не сработало для меня. Пожалуйста, помогите мне с этим.

Вот этот XML - файл :


<itemtomes>
  <applicationarea>
    <messagetype>ADD/UPATE ITEM
    <description>Items from ERP to MES
    <sender>M3
    <receiver>WONDERWARE
    <creationdatetime>2019-11-09 12:45:10.978
    <confirmation>Never
    <errormsg>
  
  <dataarea>
    <items>
      <item>
        <itemcode>10002912
        <itemname>L-Valine 96.5%
        <itemtype>152 Feed Additives Small packaging
        <status>P
        <shelflife>365
        <site>75A
        <uom>KG
        <packagetype>SMALLBAG
        <packagesize>25
        <density>
          <quantity>0.9
          <uom>L/KG
        
        <alternativematerials>
          <alternativematerial>
            <itemcode>10002911
          
        
      
      <item>
        <itemcode>10006351
        <itemname>Wheat Flour Fine
        <itemtype>101 Feed Materials Large packaging
        <status>A
        <shelflife>365
        <site>75A
        <uom>KG
        <packagetype>BIGBAG
        <packagesize>1000
        <density>
          <quantity>1.2
          <uom>L/KG
        
        <alternativematerials>
          <alternativematerial>
            <itemcode>

Я попробовал приведенный ниже код, но столкнулся с трудностями :

{================================================================================================================+=}

DT = Now();
SQL_Connection = new System.Data.SqlClient.SqlConnection("Server=localhost;Database=NUTRECOM3;User ID=sa;Password=ssmits@1234");


FOR EACH XML_FILES in System.IO.Directory.GetFiles(Me.FilePath,"*Item*.xml");
    LogMessage("XML_FILES::"+XML_FILES);


        Doc = new System.Xml.XmlDocument;
        Doc.Load(XML_FILES);

        XMLTBL = doc.NameTable;
        XML_NSM = new System.Xml.XmlNamespaceManager(XMLTBL);
        'XML_NSM.AddNamespace("asx","http://www.sap.com/abapxml");

{========================================================APPLICATION AREA=============================================}

MessageType = Doc.SelectSingleNode("/ItemToMES/ApplicationArea/MessageType").InnerText;
Description = Doc.SelectSingleNode("/ItemToMES/ApplicationArea/Description").InnerText;
Sender = Doc.SelectSingleNode("/ItemToMES/ApplicationArea/Sender").InnerText;
Receiver = Doc.SelectSingleNode("/ItemToMES/ApplicationArea/Receiver").InnerText;;
CreationDateTime = Doc.SelectSingleNode("/ItemToMES/ApplicationArea/CreationDateTime").InnerText;
Confirmation = Doc.SelectSingleNode("/ItemToMES/ApplicationArea/Confirmation").InnerText;

{======================================================================================================================}

dim m_nodelist as System.Xml.XmlNodeList;
dim m_node as System.Xml.XmlNode;
    m_nodelist = Doc.getElementsByTagName("Item");
    LogMessage(m_nodelist.Count);
    Z=1;
    X=1;



for each m_node in m_nodelist;


{================================================= READ - FIRST FIELD =================================================}

        ''SQL_FTPC_OBJ_TYPE =Doc.SelectSingleNode("/asx:abap/asx:values/TAB/item/FTPC_OBJ_TYPE",XML_NSM).InnerText;
        ''LogMessage(SQL_FTPC_OBJ_TYPE);

        ItemCode =m_node.Item("ItemCode").InnerText;

    if (ItemCode == null and ItemCode == "") then
        LogMessage("ItemCode is not having any value");
    else
        LogMessage("ItemCode = " + ItemCode);
    endif;


Что я уже пробовал:

Попробовал использовать для каждого узла плотности, но это не сработало для меня

phil.o

Это не корректный XML, ни соответствующего кода C#.

Maciej Los

Коротко И По Существу!

RickZeeland

Ты хочешь, чтобы я ... VB.NET код для работы с искаженным XML, или вы можете получить правильный XML-файл?

Richard Deeming

Ваше приложение не должно подключаться к SQL как sa Это неограниченная учетная запись пользователя, которая может быть использована для уничтожения вашей базы данных, вашего сервера или даже вашей сети.

И я надеюсь, что это не твоя вина. реальный" sa пароль, который вы только что опубликовали на публичном форуме?! Если это так, вы должны немедленно изменить его. И на этот раз выбрал надежный пароль, а не что-то такое, что можно взломать за несколько минут.

0 Ответов