将xml数据解析为Vector3
本文关键字:Vector3 xml 数据 | 更新日期: 2023-09-27 18:27:38
我正在用C#进行编码。我有一个包含不同点的xml文件。
xml文件包含三个不同的部分。第一部分包含顶点,第二部分包含法线,最后一部分包含索引。
我想知道如何解析xml文件并存储这些值。我的问题是将它转换为Vector3类型。
以下是文件的样子:
93.74445056915283,-1.859979498507132,2.36335901389315,
93.74445056915283,-1.939160544096572,2.368864585972887,93.74445056915283,
-1.781553864479065,3.202673300504684,93.74445056915283,-1.781567934571608,
2.36155147915304,93.74445056915283,-0.9234275662899016,3.202673300504684,
93.74445056915283,-1.623975274812637,2.368862884104112,93.74445056915283,
-1.703156483525081,2.363355632934579,93.74445056915283,-1.544259938449322,
您的示例看起来更像是用逗号分隔的十进制数。我还假设你指的是Unity 的Vector3
此示例返回Vector3的列表。
var inputString = "93.74445056915283,-1.859979498507132,2.36335901389315, 93.74445056915283,-1.939160544096572,2.368864585972887, 93.74445056915283,-1.781553864479065,3.202673300504684, 93.74445056915283,-1.781567934571608,2.36155147915304, 93.74445056915283,-0.9234275662899016,3.202673300504684, 93.74445056915283,-1.623975274812637,2.368862884104112, 93.74445056915283,-1.703156483525081,2.363355632934579, 93.74445056915283,-1.544259938449322,2.378187850255953";
var coordinates = inputString.Split(',').Select(n => float.Parse(n, CultureInfo.InvariantCulture.NumberFormat)).ToList();
var myVectors = new List<Vector3>();
for(var i=0;i<coordinates.Count;i+=3)
{
var myVector = new Vector3(coordinates[i], coordinates[i+1], coordinates[i+2]);
myVectors.Add(myVector);
}
我只是凭头脑写这段代码,所以可能是不可编译的。另外,请注意,我假设所有数字都可以解析为浮点(没有特殊字符,并且您所在地区的小数点是一个点.
)。此外,我假设输入数字的数量是正确的。由于Vector3在构造函数中需要3个数字,所以必须有可被3整除的计数。
下面是我试图实现的一个片段。
using (XmlReader reader = XmlReader.Create("generator_0000001.xml"))
{
List<Vector3> verticesList = new List<Vector3>();
while (reader.Read())
{
if (reader.IsStartElement())
{
switch (reader.Name)
{
case "Real64List":
if (reader.Read())
{
float vertices = Convert.ToInt64(reader.Value.Trim());
Vector3 oVert = new Vector3(vertices);
verticesList.Add(oVert);
}
break;
}
}
}
我试图解析的文件如下所示:93.74445056915283,-1.8599794985071322.36335901389315,93.74445056915283,-19.939160544096572,2.368864585972887,93.74445056915283,-1781553864479065,3.202673300504684,93.74445056915283、-1781567934571608、2.36155147915304,93.74445056915283,-0.92327566289901.202673300504684,93.74445056915283,-1.629752748126372.368862884104112,93.74445056915283,-1703156483525081,2.363355632934579,93.74445056915283,-1.54459938449322,2.378187850255953……