我正在从xml文件中提取数据集,以便在新文件中对其进行排序。为此,我需要使节点成为的父节点(以便能够根据属性feldsatz=读出值)。我试了几件事,但都没能正常工作。我的项目是基于C#for Unity3D的。如果有人给我推荐,那就太棒了。
预期结果:
<?xml version="1.0" encoding="UTF-8"?>
-<Field Type="ftProtect">
<Area Feldsatz="1">
-<UserPointList>
<UserPoint Contour="FALSE" Distance="57" Angle="0"/>
...
</UserPointList>
<Area/>
<Area Feldsatz="2"/>
-<UserPointList>
<UserPoint Contour="FALSE" Distance="57" Angle="0"/>
...
</UserPointList>
<Area/>
</Field>
实际结果:
<?xml version="1.0" encoding="UTF-8"?>
-<Field Type="ftProtect">
<Area Feldsatz="1"/>
-<UserPointList>
<UserPoint Contour="FALSE" Distance="57" Angle="0"/>
..
</UserPointList>
<Area Feldsatz="2"/>
-<UserPointList>
<UserPoint Contour="FALSE" Distance="57" Angle="0"/>
...
</UserPointList>
</Field>
代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using UnityEngine;
public class XML_divide_new : MonoBehaviour
{
void Start()
{
//Definition of Parameters
const string FILENAME = @"C:\Users\micha\Desktop\Thesis\Unity\ganzes Projekt_2\Assets\Resources\Feldsatz.xml";
const string OUTPUT_FOLDER = @"C:\Users\micha\Desktop\Thesis\Unity\ganzes Projekt_2\Assets\Resources\";
const string IDENT = "<?xml version=\"1.0\"?>";
XDocument doc = XDocument.Load(FILENAME);
XDocument newDoc = null;
//List for the "Feldlisten"
List<XElement> areas = doc.Descendants("Area").ToList();
//Counter for the "Feldlisten"
int counter = 1;
//Grouping of Fieldtypes
var groups = areas.Descendants("Field").GroupBy(x => (string)x.Attribute("Type")).ToList();
foreach (var group in groups)
{
string type = group.Key;
//Introduce the field node
XElement field = new XElement("Field", new XAttribute("Type", type));
//Implement Header and Ident
newDoc = XDocument.Parse(IDENT + field.ToString());
XElement root = newDoc.Root;
foreach (XElement userPointList in group.Descendants("UserPointList"))
{
//Introduce the area node
XElement number = new XElement("Area", new XAttribute("Feldsatz", counter));
//Add "Feldsatznummer" and Datasets; divided by Indexnumbers
root.Add(number);
root.Add(userPointList);
counter = counter + 1;
}
//Zero Counter
counter = 1;
//Filename
string filename = string.Format("{0}.xml", type);
//Save File
newDoc.Save(OUTPUT_FOLDER + filename);
}
}
}
原始XML文件:
<?xml version="1.0" encoding="WINDOWS-1252"?>
-<AreaList DeviceType="sctS300" FieldIntrusion="triple" Resolution="0,5">
-<Area CoordinatesType="polar" Name="Feldsatz 1" Index="0">
-<FieldList>
-<Field Type="ftProtect">
-<UserPointList>
<UserPoint Contour="FALSE" Distance="57" Angle="0"/>
...
</UserPointList>
</Field>
-<Field Type="ftWarn">
-<UserPointList>
<UserPoint Contour="FALSE" Distance="71" Angle="0"/>
...
</UserPointList>
</Field>
<Field Type="ftWarn2"/>
</FieldList>
</Area>
-<Area CoordinatesType="polar" Name="Feldsatz 2" Index="1">
-<FieldList>
-<Field Type="ftProtect">
-<UserPointList>
<UserPoint Contour="FALSE" Distance="57" Angle="0"/>
...
</UserPointList>
</Field>
-<Field Type="ftWarn">
-<UserPointList>
<UserPoint Contour="FALSE" Distance="71" Angle="0"/>
...
</UserPointList>
</Field>
<Field Type="ftWarn2"/>
</FieldList>
</Area>
</AreaList>
在我看来,您当前似乎是在添加创建的空area
元素number
,该元素只包含属性,然后将userpointlist
添加到中的相同root
级别(字段
)
//Introduce the area node
XElement number = new XElement("Area", new XAttribute("Feldsatz", counter));
//Add "Feldsatznummer" and Datasets; divided by Indexnumbers
root.Add(number);
root.Add(userPointList);
如果我理解正确的话,我们的目标是再次将它们嵌套在一起,就像
//Introduce the area node
XElement number = new XElement("Area", new XAttribute("Feldsatz", counter));
// Add the UserPointList nested under the Area element
number.Add(userPointList);
//Add "Feldsatznummer" and Datasets; divided by Indexnumbers
root.Add(number);
问题内容: 我想获取所有属于以下子项的标签: 我知道如何找到像这样的特定类的元素: 但是我不知道如何找到所有的孩子,而不是其他孩子。 就像我想选择: 问题答案: 尝试这个
我在一个数据帧中有一个数据结构,它有3列:节点、父节点、前一个兄弟节点 我想创建完整数据结构的树文件夹,父节点和节点之间的级别不同,节点和previous_sibling之间的级别相同,兄弟节点之间的顺序正确。 因此,一个新的数据框、重新排序和一个新的列“级别” 当parent为null时,节点处于根级别当previous_sibling为null时这是第一个同级 下面是一个例子: 数据帧 应给出
问题很简单:从这里: 我必须分析一下: 这意味着每个属性都应该成为一个新的根节点。但对我来说,最困难的是我不能从“属性”中设置“属性”值作为对象节点名称。 这对我来说是个挑战。我可以在根节点中设置新节点。已经从“attributes”中获得了一个映射,然后尝试使用forEach对它们进行迭代,以便将结果放入一个节点中,但如图所示,我必须使用“property”将其设置为对象名称的键,然后获取值并设
如果我有 如果我想选择包含td的a,我该怎么做? 我测试过: 但是我要获得td节点,我要获得a节点。如何使用XPath实现这一点?
我想为kubernetes节点添加扩展资源,我可以通过curl命令来完成:https://kubernetes.io/docs/tasks/administer-cluster/extended-resource-node/,即: 然后,我可以创建一个需要example.com/dongle资源的pod。 但是,如何使用fabric8 Java API来做到这一点呢? 我用所有节点相关的API在我
当我点击JButton时,什么都不会发生。这甚至适用于我放入的JScrollPane(它显示,但不会滚动)。为什么JPanel不在前面?我觉得有些东西必须被覆盖。应该是不是箭头部分的展开?如果是,如何做到这一点? 这是为疯狂程序员说,渲染器和编辑器使你放下的图像。在本例中,JButton是可单击的。