【问题标题】:how to Write xml text in Xml File after specific node如何在特定节点之后在 Xml 文件中写入 xml 文本
【发布时间】:2014-04-28 07:08:09
【问题描述】:

我有以下 xml 文件:

 <Query>
        <DataSourceName>DS1</DataSourceName>
        <CommandText>SELECT FirstName,Lastname FROM Person</CommandText>
      </Query>
      <Fields>
        <Field Name="FirstName">
          <DataField>FirstName</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="Lastname">
          <DataField>Lastname</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
     </Fields>

我要做的是,我必须在节点“查询”之后将 xml 文本从节点“字段”写入“/字段”..如何做到这一点..请帮帮我

【问题讨论】:

  • :您能描述一下您真正想要实现的目标吗? " 节点 "query" 之后从节点 "fields" 到 "/fields" 的 xml 文本。很好地描述您的场景,以便您的问题得到解决
  • 好吧,我的 xml 文件是:schemas.microsoft.com/sqlserver/reporting/2005/01/…" xmlns:rd="schemas.microsoft.com/SQLServer/reporting/reportdesigner"> 你好Googlewww.google.co.uk 我必须在这个xml文件中添加上面的xml文件按钮>节点..如何做到这一点

标签: xml c#-4.0 xml-namespaces


【解决方案1】:

您可以使用 Xdocument 来处理 xml。您可以参考以下 sn-p 将元素添加到标签中。希望这会有所帮助

XDocument xdoc = XDocument.Load(test.xml");
XNamespace ns = "schemas.microsoft.com/sqlserver/reporting/2005/01";
         XNamespace ns1 = "schemas.microsoft.com/SQLServer/reporting";


         xdoc.Root.Element(ns + "Fields").Add(new XElement("Field", new XAttribute("Name","ReportId"), new XElement(ns1 + "TypeName", "System.Int64"), new XElement("DataField", "ReportId")));


xdoc.Save(test.xml");

在这里添加命名空间很重要。我还附上了源文件和结果文件供您参考。

源文件:

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="schemas.microsoft.com/sqlserver/reporting/2005/01" xmlns:rd="schemas.microsoft.com/SQLServer/reporting">
  <Query>
    <DataSourceName>DS1</DataSourceName>
    <CommandText>SELECT FirstName,Lastname FROM Person</CommandText>
  </Query>
  <Fields>
    <Field Name="FirstName">
      <DataField>FirstName</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="Lastname">
      <DataField>Lastname</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
  </Fields>
</Report>

结果文件:

    <?xml version="1.0" encoding="utf-8"?>
<Report xmlns="schemas.microsoft.com/sqlserver/reporting/2005/01" xmlns:rd="schemas.microsoft.com/SQLServer/reporting">
  <Query>
    <DataSourceName>DS1</DataSourceName>
    <CommandText>SELECT FirstName,Lastname FROM Person</CommandText>
  </Query>
  <Fields>
    <Field Name="FirstName">
      <DataField>FirstName</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="Lastname">
      <DataField>Lastname</DataField>
      <rd:TypeName>System.String</rd:TypeName>
    </Field>
    <Field Name="ReportId" xmlns="">
      <rd:TypeName>System.Int64</rd:TypeName>
      <DataField>ReportId</DataField>
    </Field>
  </Fields>
</Report>

【讨论】:

  • @Roshan04 你在合并两个 xml 文件吗?
  • 好吧,它给出了错误,rd: is undeclared prefix..no m not merging two xml file.我根据你的建议更改了我的代码
  • @Roshan04 您必须指定命名空间,例如 XNamespace ns = "schemas.microsoft.com/sqlserver/reporting/2005/01";
  • 我正在尝试添加:ReportIdSystem.Int64 之前的字段>
  • 是的,我已经添加了那个命名空间,但它仍然给出了错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2022-06-17
相关资源
最近更新 更多