需要帮助在C#中编写XML Start元素

时间:2012-11-13 14:05:28

标签: c# xml xmlwriter

我已经尝试过在MSDN,W3Schools和其他一些网站上查找,似乎没有人能够得到答案。这是我的问题:

我正在尝试为XML文档生成一个start元素。我需要创建的具体元素是:

<ns1:getRecordsResponse xmlns:ns1="http://someurl/schemas">

根据我所做的研究,我已经能够使用此代码正确生成该元素的后半部分:

writer.WriteAttributeString("xmlns", "ns1", null, "http://someurl/schemas");
但是,我无法让第一部分正确生成。我已经尝试过使用writer.StartElement(“ns1”,“getRecordsResponse”),同样的行,但名称相反,我尝试在三个点中的每一个中添加null作为第三个参数,并且它永远不会出现。我也试过使用WriteElementString方法,但我不能这样做,因为它会抛出无效的操作异常:

writer.WriteElementString("ns1", "getCitationsResponse", "http://someurl/schemas", null);

如何正确编写元素?

1 个答案:

答案 0 :(得分:2)

这似乎可以做你想要的:

using System;
using System.Xml;

class Test
{
    public static void Main(string[] args)
    {
        using (var writer = XmlWriter.Create(Console.Out))
        {
            writer.WriteStartElement("ns1", "foo", "http://someurl/schemas");
            writer.WriteAttributeString("xmlns", "ns1", null, "http://someurl/schemas");
            writer.WriteEndElement();
        }
    }
}

输出(省略XML声明):

<ns1:foo xmlns:ns1="http://someurl/schemas" />

查看documentation for that overload of WriteStartElement应该清楚为什么会起作用,因为它们是按顺序排列的参数:

  
      
  • 前缀
      类型:System.String
      元素的名称空间前缀。
  •   
  • 的localName
      类型:System.String
      元素的本地名称。
  •   
  • NS
      类型:System.String
      与元素关联的名称空间URI。
  •