首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将xml数据解析为Vector3

将xml数据解析为Vector3
EN

Stack Overflow用户
提问于 2014-10-22 15:44:52
回答 2查看 685关注 0票数 0

我正在用C#编写这个代码。我有一个包含不同点的xml文件。

xml文件包含三个不同的部分。第一部分包含顶点,第二部分包含法线,最后部分包含索引。

我想知道如何解析xml文件并存储这些值。我的问题是把它转换成Vector3类型。

下面是文件的样子:

代码语言:javascript
复制
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,
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-22 16:04:21

您的示例看起来更像由comas分隔的十进制数。另外,我假设你指的是来自统一统一

此示例返回Vector3列表。

代码语言:javascript
复制
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整除的计数。

票数 0
EN

Stack Overflow用户

发布于 2014-10-22 16:14:45

这是我想要达到的目标的一个片段。

代码语言:javascript
复制
  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.8599498507132,2.3633590138315,93.74445056915283,-1.939160544096572,2.3688504687,93.74445056915283,-1.781553863864479065,3.202673300504684,93.74445056915283,-1.7815679345716088,2.36155147915304,93.74445056915283,93.7444566289016,3.202673300504684,93.74445056915283,-1.62397548127-2.3688628844112,7504915283,157706353556915283,-0.92342762899016,3.202673300504684,93.74445056915283,-1.623975481277,2.368886844112,7504915283,1577063534834834834834834834833079,-15750515283,157063534834833534833534833534834834534531579,-15750515283.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26511556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档