我正在试图找出像这样采用xml的最简单方法:
<Car>
<Description Model="Ford ">Blue </Description>
</Car>
进入这个:
<Car>
<Description Model="Ford">Blue</Description>
</Car>
答案 0 :(得分:7)
使用LINQ to XML,如下所示:
foreach (var element in doc.Descendants())
{
foreach (var attribute in element.Attributes())
{
attribute.Value = attribute.Value.Trim();
}
foreach (var textNode in element.Nodes().OfType<XText>())
{
textNode.Value = textNode.Value.Trim();
}
}
我认为应该有效...我不相信你需要使用ToList
来避免在迭代时干扰事情,因为你没有改变结构XML文档,只是文本。
答案 1 :(得分:0)
试试这个。不要忘记通过您的ChildNodes进行递归......
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\temp\cars.xml");
Recurse(doc.ChildNodes);
}
private void Recurse(XmlNodeList nodes)
{
foreach (XmlNode node in nodes)
{
if (node.InnerText != null)
node.InnerText = node.InnerText.Trim();
if (node.Attributes != null)
{
foreach (XmlAttribute att in node.Attributes)
att.Value = att.Value.Trim();
}
Recurse(node.ChildNodes);
}
}
答案 2 :(得分:0)
如果您不使用或不能使用LINQ to XML,那么以下内容对于XmlDocument来说对我来说很好用
TrimXmlText(xmlDocument.ChildNodes);
private void TrimXmlText(XmlNodeList xmlNodeList)
{
foreach (XmlNode xmlNode in xmlNodeList)
{
if (xmlNode.NodeType == XmlNodeType.Text)
{
xmlNode.InnerText = xmlNode.InnerText?.Trim();
}
else
{
TrimXmlText(xmlNode.ChildNodes);
}
}
}