Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xml中的Xml_C#_Xml_Xmldocument - Fatal编程技术网

C# Xml中的Xml

C# Xml中的Xml,c#,xml,xmldocument,C#,Xml,Xmldocument,我主要想知道如何在另一个XmlDocument中插入一个XmlDocument string tableData = null; using(StringWriter sw = new StringWriter()) { rightsTable.WriteXml(sw); tableData = sw.ToString();

我主要想知道如何在另一个XmlDocument中插入一个XmlDocument

            string tableData = null;
            using(StringWriter sw = new StringWriter())
            {
                rightsTable.WriteXml(sw);

                tableData = sw.ToString();                    
            }

            XmlDocument xmlTable = new XmlDocument();
            xmlTable.LoadXml(tableData);

            StringBuilder build = new StringBuilder();
            using (XmlWriter writer = XmlWriter.Create(build, new XmlWriterSettings { OmitXmlDeclaration = true }))
            {
                writer.WriteStartElement("dataheader");

                //need to insert the xmlTable here somehow

                writer.WriteEndElement();
            }
第一个XmlDocument将具有基本的页眉和页脚标记。 第二个XmlDocument是body/data标记,必须插入第一个XmlDocument

            string tableData = null;
            using(StringWriter sw = new StringWriter())
            {
                rightsTable.WriteXml(sw);

                tableData = sw.ToString();                    
            }

            XmlDocument xmlTable = new XmlDocument();
            xmlTable.LoadXml(tableData);

            StringBuilder build = new StringBuilder();
            using (XmlWriter writer = XmlWriter.Create(build, new XmlWriterSettings { OmitXmlDeclaration = true }))
            {
                writer.WriteStartElement("dataheader");

                //need to insert the xmlTable here somehow

                writer.WriteEndElement();
            }

有更简单的解决方案吗?

在文档解析器中使用importNode功能

在文档解析器中使用importNode功能

您需要在
CDATA
部分中编写内部XML文件

用于此类节点,将内部XML作为文本传入

writer.WriteCData(xmlTable.OuterXml);


另一个选项()是将XML编码为某种XML兼容格式(比如base64)-请注意,使用的编码必须与XML兼容,并且某些编码方案会增加编码文档的大小(base64增加约30%)。

您需要在
CDATA
部分中写入内部XML文件

用于此类节点,将内部XML作为文本传入

writer.WriteCData(xmlTable.OuterXml);


另一个选项()是将XML编码为与XML兼容的格式(例如base64)-请注意,使用的编码必须与XML兼容,并且某些编码方案会增加编码文档的大小(base64增加约30%)。

您可以基于CreateCataSection方法使用此代码

// Create an XmlCDataSection from your document
var cdata = xmlTable.CreateCDataSection("<test></test>");

XmlElement root = xmlTable.DocumentElement;

// Append the cdata section to your node
root.AppendChild(cdata);
//从文档中创建XMLCDATA节
var cdata=xmlTable.createCDATA节(“”);
XmlElement root=xmlTable.DocumentElement;
//将cdata节附加到节点
root.AppendChild(cdata);

链接:

您可以基于CreateCataSection方法使用此代码

// Create an XmlCDataSection from your document
var cdata = xmlTable.CreateCDataSection("<test></test>");

XmlElement root = xmlTable.DocumentElement;

// Append the cdata section to your node
root.AppendChild(cdata);
//从文档中创建XMLCDATA节
var cdata=xmlTable.createCDATA节(“”);
XmlElement root=xmlTable.DocumentElement;
//将cdata节附加到节点
root.AppendChild(cdata);

链接:

我不确定您真正想要的是什么,但这可以展示如何合并两个xml文档(使用Linq2xml)

字符串xml1=
@"
校长1
页脚
";
字符串xml2=
@"
身体
页脚
";
var xdoc1=XElement.Parse(xml1);
var xdoc2=XElement.Parse(xml2);
xdoc1.subjects().First(d=>d.Name==“header”).AddAfterSelf(xdoc2.Elements());
var newxml=xdoc1.ToString();
输出

<xml1>
  <header>header1</header>
  <body>body</body>
  <data>footer</data>
  <footer>footer</footer>
</xml1>

校长1
身体
页脚
页脚

我不确定您真正想要的是什么,但这可以展示如何合并两个xml文档(使用Linq2xml)

字符串xml1=
@"
校长1
页脚
";
字符串xml2=
@"
身体
页脚
";
var xdoc1=XElement.Parse(xml1);
var xdoc2=XElement.Parse(xml2);
xdoc1.subjects().First(d=>d.Name==“header”).AddAfterSelf(xdoc2.Elements());
var newxml=xdoc1.ToString();
输出

<xml1>
  <header>header1</header>
  <body>body</body>
  <data>footer</data>
  <footer>footer</footer>
</xml1>

校长1
身体
页脚
页脚

如何将其作为CDATA包含?在外部XML节点中使用CDATA部分,您将在其中放置内部XML文档。如何将其作为CDATA包含?在外部XML节点中使用CDATA部分,您将在这里放置您的内部XML文档。
importNode
应该实现什么?importNode应该实现什么?我不想自己给出答案,因为我以前没有做过这种事情,但是OP能将内部xml编码到XmlDocument中的一个元素吗?@DJQuimby-这是另一种选择。我自己不想给出答案,因为我以前没有做过这种事情,但是OP能将内部xml编码到XmlDocument中的一个元素吗?@DJQuimby-这是另一种选择。