Member 13358124 Ответов: 1

Получение XML-данных в массиве VB


<?xml version="1.0" standalone="yes"?>
<EnDic11>
  <EnDic>
    <word>ant</word>
    <meanings>
      <meaning>test1 </meaning>
      <meaning> test2 </meaning>
      <meaning> test3</meaning>
          </meanings>
  </EnDic>
  <EnDic>
    <word>cat</word>
    <meanings>
      <meaning>test4</meaning>
    </meanings>
  </EnDic>
 </EnDic11>


Я пытаюсь получить,

АНТ-test1 и test2,test3
cat-test4

как выход.

Но у меня были ошибки.
Как решить эту проблему.
СПАСИБО!

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

Dim i As Integer
        Dim output  as string=""
        Dim xl As String
        Dim ac As XmlDocument = Nothing
        Dim xn As XmlNodeList
        Dim [FileStream] As New FileStream(enSinDicPath, FileMode.Open, FileAccess.Read)
        [XmlDocument].Load([FileStream])
        [XmlNodeList] = [XmlDocument].GetElementsByTagName("EnSinDic")

        For i = 0 To [XmlNodeList].Count - 1
            [XmlNodeList](i).ChildNodes.Item(0).InnerText.Trim()

            For Each word In words
                If [XmlNodeList](i).ChildNodes.Item(0).InnerText.ToLower = word.ToLower Then
                    xl = [XmlNodeList](i).InnerXml
                    ac.Load(xl)
                    xn = ac.GetElementsByTagName("meanings")
                    For q = 0 To xn.Count - 1
                       output = output & Environment.NewLine & xn(i).ChildNodes.Item(0).InnerText.ToLower
                    Next
                End If
            Next
        Next
    End Sub

CHill60

Вы должны сказать нам, что это за ошибки

ZurdoDev

- Нет! Вряд ли кто-то будет просматривать ваш код и пытаться понять, как заставить его делать то, что вы хотите.

Richard Deeming

Очевидная проблема заключается в том, что вы звоните GetElementsByTagName("EnSinDic"), в то время как XML-документ, который вы показали, не содержит такого элемента.

Кроме того, вы должны рассказать нам, в чем заключаются ошибки.

Нажмите на зеленую ссылку "улучшить вопрос" и обновите свой вопрос, чтобы добавить полную информацию об ошибках. Не забудьте указать, к какой строке кода они относятся.

1 Ответов

Рейтинг:
1

Maciej Los

Проверить это:

string xcontent = @"<?xml version='1.0' standalone='yes'?>
<EnDic11>
  <EnDic>
    <word>ant</word>
    <meanings>
      <meaning>test1</meaning>
      <meaning>test2</meaning>
      <meaning>test3</meaning>
          </meanings>
  </EnDic>
  <EnDic>
    <word>cat</word>
    <meanings>
      <meaning>test4</meaning>
    </meanings>
  </EnDic>
 </EnDic11>";
 
 
 XDocument xdoc = XDocument.Parse(xcontent);
 
 var result = xdoc.Descendants("EnDic")
 	.Select(x=>string.Concat(x.Element("word").Value, "-", string.Join(",", x.Descendants("meaning").Select(y=>y.Value))))
	.ToList();


результат:
ant-test1,test2,test3 
cat-test4