我使用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”数据转换为预期格式。
答案 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 );