繁体   English   中英

将XElement片段从xml文件读取到XElement元素

[英]Read XElement Fragment from xml file to XElement Element

我在xml文件中有xml片段。 该片段具有带名称空间的标签。

我如何读取该XML片段,该片段恰好表示一个XElement元素?

    <node id="n0::n0">
  <data key="d6">
    <y:ShapeNode>
      <y:Geometry height="91.44" width="59.49119999999999" x="364.256180835285" y="-698.4404365079365"/>
      <y:Fill color="#FFCC00" transparent="false"/>
      <y:BorderStyle color="#000000" type="line" width="1.0"/>
      <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="48.677734375" x="5.406732812499968" y="4.0">MELEIN</y:NodeLabel>
      <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="custom" textColor="#000000" visible="true" width="27.35546875" x="16.067865624999968" y="20.843814062500087">8,00<y:LabelModel>
          <y:SmartNodeLabelModel distance="4.0"/>
        </y:LabelModel>
        <y:ModelParameter>
          <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="-0.5" nodeRatioX="0.0" nodeRatioY="-0.2720492775317138" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
        </y:ModelParameter>
      </y:NodeLabel>
      <y:Shape type="rectangle"/>
    </y:ShapeNode>
  </data>
</node>

我尝试了很多不同的方法,最后一个几乎达到了目标

        var mngr = new System.Xml.XmlNamespaceManager(new System.Xml.NameTable());
    mngr.AddNamespace(string.Empty, "urn: ignore"); // or proper URL
    mngr.AddNamespace("y", "urn:ignore"); // or proper URL
    var parserContext = new System.Xml.XmlParserContext(null, mngr, null, System.Xml.XmlSpace.None, null);

    var txtReader = new System.Xml.XmlTextReader("block.graphml", System.Xml.XmlNodeType.Element, parserContext);
    var ele = XElement.Load(txtReader);

但是它在最后一行与System.InvalidOperationException一起崩溃

有什么简单的方法可以将xml片段导入到现有的xelement中? 我更喜欢XElement.load("block.graphml"); 这根本没有用。

谢谢你的提示

你可以这样

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";
        static void Main(string[] args)
        {
            string input = File.ReadAllText(FILENAME);
            XElement element = XElement.Parse("<Root xmlns:y=\"www.mynamespace.com\"></Root>");

            element.Add(input);

        }

    }
}
​

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM