C#格式化带有命名空间的XML文档输出

时间:2015-07-29 20:54:07

标签: c# xml namespaces formatting

我有像这样的Web服务序列化创建的XmlDocument(标题未显示):

 public boolean onCreateActionMode(ActionMode mode, Menu menu) {
      //mode.setTitle("Contextual Action Bar"); (replace this call)
      TextView tv= (TextView)getLayoutInflater().inflate(R.layout.contextual_title, null);
      tv.setText("Contextual Action Bar");
      mode.setCustomView(tv);
}

有没有办法如何获取XmlDocument的字符串表示形式:

<request xmlns="a">
    <value1>1</value1>
    <value2>2</value2>
</request>

没有手动迭代和格式化?

更新:原因是,许多目标系统中的一个需要这种格式,而其他系统不需要。我知道,我可以使用Razor模板和WebRequest这个系统,但是我试图找到通用解决方案,在这种情况下使用IClientMessageInspector。

1 个答案:

答案 0 :(得分:2)

如果您愿意使用XDocument API而不是XmlDocument,则可以这样做:

XDocument xDoc = XDocument.Parse( @"<request xmlns=""a"">
                                          <value1>1</value1>
                                          <value2>2</value2>
                                   </request>");     

xDoc.Root.ReplaceAttributes(new XAttribute(XNamespace.Xmlns + "ns", "a"));
string xmlOut = xDoc.ToString();

产生此输出:

<ns:request xmlns:ns="a">
   <ns:value1>1</ns:value1>
   <ns:value2>2</ns:value2>
</ns:request>