【发布时间】:2018-08-07 08:22:48
【问题描述】:
我正在构建一个小软件,它应该生成一个 graphml 文件,以便之后使用 yEd 进行读取。它是一个使用节点和边构建图形的软件。
典型的“节点”写法如下
<node id="n0">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="80.0" width="90.0" x="0.0" y="0.0"/>
<y:Fill color2="#993300" hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="43.6962890625" x="23.15185546875" xml:space="preserve" y="4.0">Boite1</y:NodeLabel>
<y:Shape type="diamond"/>
</y:ShapeNode>
</data>
</node>
我正在尝试通过 C# 编辑一个 graphml 文件。我想这样做的方法是在富文本框中打印行,然后将其保存到具有正确扩展名的文件中。
虽然我似乎无法在打印件中打印引号,如下所示。 'WriteLog' 方法是我打印到富文本框的方法。
WriteLog("<?xml version="1.0" encoding="UTF - 8" standalone="no"?>");
还有其他我没有想到的方法吗?我对xml真的不熟悉。
【问题讨论】:
-
这只是具有特定命名空间的 XML。不用编写字符串,而是使用 XDocument 或 XmlSerializer 等 XML 类来生成 XML 文件
-
是的,我就是这么想的,但是软件需要一个一个地写节点,而不是一次。 XDocument 不是一次创建 xml 文件吗?
-
您可以使用
svcutil.exe、xsd.exe工具生成可用于从其xsd 序列化/反序列化XML 文件的类。 -
write nodes one by one, not once你不能在 XML 文件中一个一个地写入节点。封闭元素始终必须关闭。 文件必须保存为一个。 -
向 XDocument 添加元素虽然可以一次完成一个。如果您使用生成的对象,它会更容易。您可以指定子元素由
List<T>表示,而不是数组。