【问题标题】:Remove Empty Line From XML Document从 XML 文档中删除空行
【发布时间】:2011-12-14 09:41:54
【问题描述】:

我目前面临一个问题。我在 C# 中加载一个 xml 文件并从中删除一些节点并附加一些节点。现在的问题是,当我从 xml 文件中删除时,会自动创建一些空行,所以我想删除这些行。

当我在 xml 中将一些节点附加到父节点时,我希望每个结束标记中都有新行

例如。我的 XML 文件是

<intro id="S0001">
    <title>Introduction Title</title>
     <para>This is a paragraph. Note that paragraphs can contain other block–level objects, such as lists, as well as directly containing text.</para>
     <para>The introduction can contain all of the text objects that a section can contain, except that it cannot be divided into parts, sections and sub–sections.</para>
     <para>The introduction can contain tables:</para>

   </intro><part>
       <no>Part A</no> Article Structure <sup>&lpar;Part Title&rpar;</sup><section1 id="S0002">`enter code here`
     <no>Sect 1</no>
     <title>First Section in Part 1 <sup>&lpar;Section 1 Title&rpar;</sup></title>
     <shortsectionhead>Short Section Header</shortsectionhead>
     <para>This is a section in the first part of the article.</para>
   </section1><section1 id="S0003">

代码:

XmlNode partNnode = xmlDoc.SelectSingleNode("//part");
XmlNode introNode=xmlDoc.SelectSingleNode("//intro");
XmlDocumentFragment newNode=xmlDoc.CreateDocumentFragment();
newNode.InnerXml=partNnode.OuterXml;
introNode.ParentNode.InsertAfter(newNode,introNode);
partNnode.ParentNode.RemoveChild(partNnode);
partNnode = xmlDoc.SelectSingleNode("//part");
nodeList = xmlDoc.SelectNodes("//section1");    

foreach (XmlNode refrangeNode in nodeList)
{
    newNode=xmlDoc.CreateDocumentFragment();
    newNode.InnerXml=refrangeNode.??OuterXml;
    partNnode.AppendChild(newNode);
} 

请帮帮我 提前致谢

【问题讨论】:

  • 你能发布到目前为止你尝试过的代码吗?
  • XmlNode partNnode = xmlDoc.SelectSingleNode("//part"); XmlNode introNode=xmlDoc.SelectSingleNode("//intro"); XmlDocumentFragment newNode=xmlDoc.CreateDocumentFragment(); newNode.InnerXml=partNnode.OuterXml; introNode.ParentNode.InsertAfter(newNode,introNode); partNnode.ParentNode.RemoveChild(partNnode); partNnode = xmlDoc.SelectSingleNode("//part"); nodeList = xmlDoc.SelectNodes("//section1"); foreach (XmlNode refrangeNode in nodeList){newNode=xmlDoc.CreateDocumentFragment();newNode.InnerXml=refrangeNode.OuterXml;partNnode.AppendChild(newNode);}

标签: c# asp.net xml-parsing


【解决方案1】:

如果您使用 C# 加载和保存 XMl 文件,则 XML 应该被正确格式化(格式化看起来奇怪的 XML 文件的简单方法是使用一些 C# 代码加载和保存它们)。

如果我正确理解您的问题,那么您只是对 XML 文件的格式不满意?

如你所愿(A):

</intro><part>

但你得到(B):

</intro>
<part>

如果这是问题所在,那么,在我看来,你只是想要一件奇怪的事情。因为……

a) 代码不关心 XML 文件的格式和 b) (B)中的格式是正确的

如果您出于某种原因想要更改它,那么您必须解析 XML 文件,将其作为字符串打开并手动检查关闭和打开的标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-01
    • 2016-11-05
    • 2020-01-15
    • 1970-01-01
    • 2016-06-23
    • 2012-05-11
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多