在特定位置添加一行xml文本

本文关键字:一行 xml 文本 定位 位置 添加 | 更新日期: 2023-09-27 17:59:20

如何将以下样式表信息插入到使用C#创建的现有xml文件中?

<?xml-stylesheet type="text/xsl" href="_fileName.xsl"?>

或者。。。。我可以在创建新的XML文件时添加此行吗?

编辑:

我尝试使用XmlSerialier(点击并试用)来实现上述目标,类似于以下内容:

// assumes 'XML' file exists.
XmlDocument doc = new XmlDocument();
XElement dataElements = XElement.Load("_fileName.xml");
XmlSerializer xs = new XmlSerializer(typeof(Parents));
var ms = new MemoryStream();
xs.Serialize(ms, parents);
ms.Seek(0, SeekOrigin.Begin); // rewind stream to beginning
doc.Load(ms);
XmlProcessingInstruction pi;
string data = "type='"text/xsl'" href='"_fileName.xsl'"";
pi = doc.CreateProcessingInstruction("xml-stylesheet", data);
doc.InsertBefore(pi, doc.DocumentElement); // insert before root
doc.DocumentElement.Attributes.RemoveAll(); // remove namespaces

但是输出xml正在损坏:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="_fileName.xsl"?>
<parents />

而所需的输出类似于:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="_fileName.xsl"?>
<parents>
<parent>
<Child1>
<child2>
</parent>
</parents>

这有助于理解我的问题吗???

在特定位置添加一行xml文本

你没有回答这个问题。。"你用什么库"。

尽管我建议:

XDocument

如果你想使用它,你可以做一些类似的事情:

XDocument document = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
document.Add(new XProcessingInstruction(
      "xml-stylesheet", "type='"text/xsl'" href='"_fileName.xsl'""));
//and then your actual document...
document.Add(
    new XElement("parent",
         new XElement("child1"),
         new XElement("child2")
    )
);

编辑:

好的,所以你可以这样做:

 XDocument document = XDocument.Load("file");
 document.AddFirst(new XProcessingInstruction(
    "xml-stylesheet", "type='"text/xsl'" href='"LogStyle.xsl'""));

这就是你要找的吗?