从.NET中的XmlDocument生成XML时,xmlns第一次插入没有关联命名空间的元素时会出现空白属性.怎么能防止这种情况?
例:
XmlDocument xml = new XmlDocument();
xml.AppendChild(xml.CreateElement("root",
"whatever:name-space-1.0"));
xml.DocumentElement.AppendChild(xml.CreateElement("loner"));
Console.WriteLine(xml.OuterXml);
Run Code Online (Sandbox Code Playgroud)
输出:
<root xmlns="whatever:name-space-1.0"><loner xmlns="" /></root>
Run Code Online (Sandbox Code Playgroud)
期望的输出:
<root xmlns="whatever:name-space-1.0"><loner /></root>
Run Code Online (Sandbox Code Playgroud)
是否有适用于XmlDocument代码的解决方案,而不是在将文档转换为字符串后出现的问题OuterXml?
我这样做的原因是看看我是否可以使用XmlDocument生成的XML匹配特定协议的标准XML.空白xmlns属性可能不会破坏或混淆解析器,但它在我已经看到的此协议的任何用法中也不存在.
在创建具有内部私有方法的类时,通常为了减少代码重复,不需要使用任何实例字段,将方法声明为静态是否具有性能或内存优势?
例:
foreach (XmlElement element in xmlDoc.DocumentElement.SelectNodes("sample"))
{
string first = GetInnerXml(element, ".//first");
string second = GetInnerXml(element, ".//second");
string third = GetInnerXml(element, ".//third");
}
Run Code Online (Sandbox Code Playgroud)
...
private static string GetInnerXml(XmlElement element, string nodeName)
{
return GetInnerXml(element, nodeName, null);
}
private static string GetInnerXml(XmlElement element, string nodeName, string defaultValue)
{
XmlNode node = element.SelectSingleNode(nodeName);
return node == null ? defaultValue : node.InnerXml;
}
Run Code Online (Sandbox Code Playgroud)
将GetInnerXml()方法声明为静态是否有任何优势?没有意见回复,我有意见.
可能重复:
在同一台计算机上运行Internet Explorer 6,Internet Explorer 7和Internet Explorer 8
有没有办法让Internet Explorer 8和Internet Explorer 6并排进行虚拟化?
我使用了多个IE浏览器,它可以与Internet Explorer 7一起使用,但是由于我安装了Internet Explorer 8 beta 2,因此Internet Explorer 6开始表现得很奇怪(也就是说,比平常更多).
internet-explorer superpreview internet-explorer-8 internet-explorer-7 internet-explorer-6
这可能是一种风格问题,但我们的开发团队有一点分歧,我想知道是否有其他人对此事有任何想法......
基本上,我们有一些调试打印语句,我们在正常开发过程中关闭.我个人更喜欢做以下事情:
//---- SomeSourceFile.cpp ----
#define DEBUG_ENABLED (0)
...
SomeFunction()
{
int someVariable = 5;
#if(DEBUG_ENABLED)
printf("Debugging: someVariable == %d", someVariable);
#endif
}
Run Code Online (Sandbox Code Playgroud)
有些团队更喜欢以下内容:
// #define DEBUG_ENABLED
...
SomeFunction()
{
int someVariable = 5;
#ifdef DEBUG_ENABLED
printf("Debugging: someVariable == %d", someVariable);
#endif
}
Run Code Online (Sandbox Code Playgroud)
......哪些方法对你来说听起来更好?为什么?我的感觉是,第一个更安全,因为总有一些东西被定义,并且没有危险它可以破坏其他地方的其他定义.
我在这个上失去了头发 ......似乎当我修改宽度为HTML SELECT控件时,它会根据浏览器的不同呈现其宽度.
任何想法如何标准化这个而不必转向多个样式表?
这是我正在使用的:
.combo
{
padding: 2px;
width: 200px;
}
.text
{
padding: 2px;
width: 200px;
}
Run Code Online (Sandbox Code Playgroud)
这是我的页面的文档类型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud) 当使用具有此控件的鼠标滚轮时,我们想要覆盖DataGridView的默认行为.默认情况下,DataGridView滚动的行数等于SystemInformation.MouseWheelScrollLines设置.我们想要做的是一次只滚动一个项目.
(我们在DataGridView中显示图像,它们有点大.由于这个滚动三行(典型的系统设置)太多,经常导致用户滚动到他们甚至看不到的项目.)
我已经尝试了几件事,到目前为止还没有取得多大成功.以下是我遇到的一些问题:
您可以订阅MouseWheel事件,但无法将事件标记为已处理并执行自己的操作.
您可以覆盖OnMouseWheel,但似乎从未调用过.
您可能能够在基本滚动代码中更正此问题,但这听起来像一个混乱的工作,因为其他类型的滚动(例如使用键盘)来自同一个管道.
有人有个好主意吗?
这是最终的代码,使用给出的精彩答案:
/// <summary>
/// Handle the mouse wheel manually due to the fact that we display
/// images, which don't work well when you scroll by more than one
/// item at a time.
/// </summary>
///
/// <param name="sender">
/// sender
/// </param>
/// <param name="e">
/// the mouse event
/// </param>
private void mImageDataGrid_MouseWheel(object sender, MouseEventArgs e)
{
// Hack alert! Through reflection, we know that the passed
// in event …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
python ×2
c ×1
c++ ×1
coding-style ×1
datagridview ×1
flash ×1
html ×1
if-statement ×1
performance ×1
range ×1
ruby ×1
superpreview ×1
xml ×1
xmldocument ×1
xrange ×1