在C#中将字符串转换为xml

时间:2011-09-20 15:03:19

标签: xml

我使用Stringbuilder构建了一些xml标记。这个Stringbuilder字符串我想使用C#以XML格式转换为字符串。下面我已经指定了输入字符串和预期的输出字符串。

EX:

Input:
      <Configuration Id="5020244c-42c4-4a3c-af16-806d8948c7fd" Name="ACTDrawing" Landscape="True" PaperKind="A3" IsNewConfiguration="true"><Worksheets><WorkSheet Name="OVERVIEW" Zoom="100" Lock="False" Default="True"> <Page Id="7eba0912-51bf-4ffe-ac65-6ac495fa5af6" Number="1" Lock="False"></WorkSheet></Worksheets></Configuration>

Expected Output:
      <Configuration Id=\"5020244c-42c4-4a3c-af16-806d8948c7fd\" Name=\"ACTDrawing\" Landscape=\"True\" PaperKind=\"A3\" IsNewConfiguration=\"true\"><Worksheets><WorkSheet Name=\"OVERVIEW\" Zoom=\"100\" Lock=\"False\" Default=\"True\"><Page Id=\"7eba0912-51bf-4ffe-ac65-6ac495fa5af6\" Number=\"1\" Lock=\"False\"></WorkSheet></Worksheets></Configuration>

我已完成此次转化的代码。

前:

    StringBuilder ACTConfigXML = new StringBuilder();
ACTConfigXML.Append("<Configuration Id=\"");
ACTConfigXML.Append(System.Guid.NewGuid());
ACTConfigXML.Append("\" Name=\"ACTDrawing\" " +
    "Landscape=\"True\" PaperKind=\"A3\" " +
    "IsNewConfiguration=\"true\">");
ACTConfigXML.Append("<Worksheets>");
ACTConfigXML.Append("<WorkSheet Name=\"");
ACTConfigXML.Append(_WorkSheetName.ToString());
ACTConfigXML.Append("\" Zoom=\"100\" Lock=\"False\" Default=\"False\">");
ACTConfigXML.Append("</WorkSheet>");
ACTConfigXML.Append("</Worksheets></Configuration>");

XmlDocument _ACTGraphicalXMLDoc = new XmlDocument();
_ACTGraphicalXMLDoc.LoadXml(ACTConfigXML.ToString());
ACTConfigXML = new StringBuilder();
ACTConfigXML.Append(_ACTGraphicalXMLDoc.OuterXml);
string configXML = ACTConfigXML.ToString();

在这个例子中,我不想使用“_ACTGraphicalXMLDoc.OuterXml”进行格式化。我想将“ACTConfigXML”数据转换为预期格式。

4 个答案:

答案 0 :(得分:0)

如果这是您的输入,则只需将其另存为XML文件即可。您不需要XML中的转义双引号(如果您在程序中输入文字,则只需要这样)。你的问题没有解释你所尝试的内容等,也没有解决最终目标。

答案 1 :(得分:0)

根据您发布的内容,看起来像string.replace()可能会发挥作用

output = input.replace("{", "\"");
output = output.replace("\"", "\\\"");

答案 2 :(得分:0)

您可以使用 XmlDocument

保存字符串

答案 3 :(得分:0)

从字符串构建文档很少是个好主意。如果“_WorkSheetName.ToString()”包含任何会破坏XML的内容(如“/&gt; ...”),那么您就是在为XML错误做好准备 在字符串或磁盘文件中创建模板XML文档,使用XmlDomDocument.loadXML加载到DOM中,更新所需的值/属性。例如

string strXML = @"
<Configuration id='to be replaced' Landscape='True' PaperKind='A3' IsNewConfiguration='true'>
    <Worksheets>
        <Worksheet Name='to be replaced' Zoom='100' Lock='False' Default='False'/>
    </Worksheets>
</Configuration>";

XmlDocument xml = new XmlDocument();
xml.LoadXml( strXML );
XmlElement ndElement = xml.DocumentElement;
ndElement.SetAttribute( "id", System.Guid.NewGuid().ToString() );

XmlElement ndWorksheet = (XmlElement)xml.SelectSingleNode( "/Configuration/Worksheets/Worksheet" );
if( ndWorksheet != null ) {
    ndWorksheet.SetAttribute("Name", "Safe worksheet name <>'\"/>");
}

xml.Save( Response.OutputStream );