【问题标题】:Generate a GraphML via C#通过 C# 生成 GraphML
【发布时间】: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.exexsd.exe 工具生成可用于从其xsd 序列化/反序列化XML 文件的类。
  • write nodes one by one, not once 你不能在 XML 文件中一个一个地写入节点。封闭元素始终必须关闭。 文件必须保存为一个。
  • 向 XDocument 添加元素虽然可以一次完成一个。如果您使用生成的对象,它会更容易。您可以指定子元素由List&lt;T&gt; 表示,而不是数组。

标签: c# xml graphml


【解决方案1】:

因为我确实需要一个一个添加节点,所以我必须通过一个富文本框,然后将其另存为 .graphml

我只需要转义双引号\

我的线变成了

WriteLog("<?xml version=\"1.0\" encoding=\"UTF - 8\" standalone=\"no\"?>");

感谢 Panagiotis 的帮助!我会尝试研究 XDocument 以找到比这更“干净”的方法!

【讨论】:

    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多