Cant parse all elements of XML to C#?
Hello everybody, Im a total noob in this. I tried to parse a Xml to C#.So I managed it somehow, now I stock.I will need all of the content of the elements of the XML but my C# code can only read to "mouth4":
<visimes>
<text>hello world</text>
<voice>usenglishfemale</voice>
<length>753</length>
<frames>9</frames>
<visime>
<start>1</start>
<end>74</end>
<index>1</index>
<length>74</length>
<mouth>12</mouth>
</visime>
<visime>
<start>75</start>
<end>102</end>
<index>2</index>
<length>28</length>
<mouth>4</mouth> //----------------This is the last output----------------
</visime>
<viseme>
<start>103</start>
<end>182</end>
<index>3</index>
<length>80</length>
<mouth>14</mouth>
</viseme>
<viseme>
<start>183</start>
<end>269</end>
<index>4</index>
<length>87</length>
<mouth>8</mouth>
</viseme>
<viseme>
<start>270</start>
<end>359</end>
<index>5</index>
<length>90</length>
<mouth>7</mouth>
</viseme>
<viseme>
<start>360</start>
<end>470</end>
<index>6</index>
<length>111</length>
<mouth>5</mouth>
</viseme>
<viseme>
<start>471</start>
<end>660</end>
<index>7</index>
<length>190</length>
<mouth>14</mouth>
</viseme>
<viseme>
<start>661</start>
<end>752</end>
<index>8</index>
<length>92</length>
<mouth>19</mouth>
</viseme>
<viseme>
<start>753</start>
<end>753</end>
<index>9</index>
<length>1</length>
<mouth>0</mouth>
</viseme>
</visimes>
of the xml. Any idea what I miss here?I want to get all elements of "visime" after a little delay of time. Here is my C# code:
void Start()
{
StartCoroutine(GetVisimes());
wait_framerate =0;//Start at 0
}
IEnumerator GetVisimes()
{
XmlDocument xmlDoc = new XmlDocument(); document.
xmlDoc.LoadXml(GameAsset.text);
XmlNodeList visimesList = xmlDoc.GetElementsByTagName("visimes");
foreach (XmlNode visimeInfo in visimesList)
{
XmlNodeList visimeContent = visimeInfo.ChildNodes;
foreach (XmlNode visimesItens in visimeContent) // levels itens nodes.
{
if(visimesItens.Name == "text")
{
Debug.Log (visimesItens.InnerText);
Text=visimesItens.InnerText;
}
if(visimesItens.Name == "voice")
{
Debug.Log (visimesItens.InnerText);
Voice=visimesItens.InnerText;
}
if(visimesItens.Name == "frames")
{
Debug.Log( "frames=" + visimesItens.InnerText);
Frames= int.Parse (visimesItens.InnerText);
}
if(visimesItens.Name == "length")
{
Debug.Log( "length=" + visimesItens.InnerText);
Length= int.Parse (visimesItens.InnerText);
}
if(visimesItens.Name == "visime")
{
XmlNodeList newtransformList = visimesItens.ChildNodes;
foreach (XmlNode newtransformItens in newtransformList)
{
if(newtransformItens.Name == "mouth")
{
yield return new WaitForSeconds(wait_framerate);
Mouth = int.Parse(newtransformItens.InnerText);
wait_framerate =length/framerate_divider;//Set new wait_framerate
}
if(newtransformItens.Name == "index")
{
Index = int.Parse(newtransformItens.InnerText);
Debug.Log( "index=" + newtransformItens.InnerText);
}
if(newtransformItens.Name == "length")
{
length = int.Parse(newtransformItens.InnerText);
Debug.Log( "length=" + newtransformItens.InnerText);
}
if(newtransformItens.Name == "start")
{
start = int.Parse(newtransformItens.InnerText);
Debug.Log( "start=" + newtransformItens.InnerText);
}
if(newtransformItens.Name == "end")
{
end = int.Parse(newtransformItens.InnerText);
Debug.Log( "end=" + newtransformItens.InnerText);
}
}
}
}
}
}
Comment
Ok I solved it, for everybody with the same Xml structure here the changes in my code. Now its fine:
foreach (XmlNode Visime in visimeInfo.SelectNodes("visime"))//select all Nodes in visime here { // if(visimesItens.Name == "visime") //{
Your answer
![](https://koobas.hobune.stream/wayback/20220612041719im_/https://answers.unity.com/themes/thub/images/avi.jpg)