我指的是GitHub for Windows附带的shell和Git Bash(它有一个独立的安装程序).
有人可以提供一些代码来获取System.Xml.XmlNode实例的xpath吗?
谢谢!
我在c#中使用命令行运行一个程序,这个程序产生一些日志,而它运行时需要在它发生变化时显示这些日志.我写了下面的代码,但它显示了进程被杀死后的所有日志,并且在运行期间我的程序没有响应.我该怎么解决?
问候
ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + "C:\\server.py");
Process proc = new Process();
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardOutput = true;
//procStartInfo.CreateNoWindow = true;
proc.StartInfo = procStartInfo;
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit(300);
LogstextBox.Text = output;
Run Code Online (Sandbox Code Playgroud)
编辑:
嗯,我试图使用,OutputDataReceived但它没有显示任何结果,这里是更改的代码:
{
//processCaller.FileName = @"ping";
//processCaller.Arguments = "4.2.2.4 -t"; this is working
processCaller.FileName = @"cmd.exe";
processCaller.Arguments = "/c c:\\server.py"; //this is not working
processCaller.StdErrReceived += new DataReceivedHandler(writeStreamInfo);
processCaller.StdOutReceived += new DataReceivedHandler(writeStreamInfo);
processCaller.Completed += new EventHandler(processCompletedOrCanceled);
processCaller.Cancelled += …Run Code Online (Sandbox Code Playgroud) 这是我的特定场景,其中包含一个接口及其实现:
IPerson {string Name;}
American : IPerson {string Name;}
Asian : IPerson {string Name;}
European : IPerson {string Name;}
People = new List<IPerson>(); // This list can have American, Asian and/or European
Run Code Online (Sandbox Code Playgroud)
当我访问People列表时,我需要区分美国,亚洲和欧洲,他们可以共享相同的界面.使用额外的接口(IAmerican,IAsian,IEuropean)是好的,它们都实现了IPerson并使用它来区分实现类,如:
IAmerican : IPerson {}
IAsian : IPerson {}
IEuropean : IPerson {}
American : IAmerican {string Name;}
Asian : IAsian {string Name;}
European : IEuropean {string Name;}
People = new List<IPerson>();
People.Add(new American());
People.Add(new Asian());
People.Add(new European());
var americans = People.OfType<IAmerican>(); // Getting all Americans …Run Code Online (Sandbox Code Playgroud) 在INFORMATION_SCHEMA.ROUTINES视图中,ROUTINE_NAME和SPECIFIC_NAME存在.根据MSDN,它们是相同的.它们只是为了某些种类的向后兼容吗?如果不是为什么视图中包含冗余字段?
我需要从表中选择一些列作为XML,其中包含名称空间以及其他列.例如,我有以下表格布局:
ID C1 X1C1 X1C2 X2C3
1 A 1 2 3
Run Code Online (Sandbox Code Playgroud)
查询应返回的内容是:
ID C1 XmlData
1 A <xmldata1>
2 A <xmldata2>
Run Code Online (Sandbox Code Playgroud)
哪里<xmldata1>会:
<Root xmlns:xsd="w3.org/2001/XMLSchema" xmlns:xsi="w3.org/2001/XMLSchema-instance" xmlns:mst="microsoft.com/wsdl/types/">
<Child attrib="C1">
<ChildValue xsi:type="xsd:integer">1</ChildNode>
</Child>
<Child attrib="C2">
<ChildNode xsi:type="xsd:integer">2</ChildNode>
</Child>
</Root>
Run Code Online (Sandbox Code Playgroud)
并且<xmldata2>将是:
<Rootxmlns:xsd="w3.org/2001/XMLSchema" xmlns:xsi="w3.org/2001/XMLSchema-instance" xmlns:mst="microsoft.com/wsdl/types/">
<Child attrib="C3">
<ChildNode xsi:type="xsd:integer">3</ChildNode>
</Child>
</Root>
Run Code Online (Sandbox Code Playgroud)
我有一个很好的参考如何从这个SO问题构建xml 但我无法放入名称空间.如果这是可能的怎么办?
编辑:我使用以下查询尝试获得所需的结果:选择1个ID,'A'C1,1个X1C1,2个X1C2,3个X2C3到#t
;with xmlnamespaces('w3.org/2001/XMLSchema' as xsd, 'w3.org/2001/XMLSchema-instance' as xsi, 'microsoft.com/wsdl/types/' as mst)
select ID, C1, (select (SELECT 'C1' "@attrib", 'xsd:integer' "ChildValue/@xsi:type",t.X1C1 as 'ChildValue' FOR XML PATH('Child'), …Run Code Online (Sandbox Code Playgroud) 我想通过Xpath case insensitve搜索节点.
<Validation>
<Presentation>
<Slide Tag= "Test">
<FontSize Value = "36"/>
</Slide>
</Presentation>
</Validation>
Run Code Online (Sandbox Code Playgroud)
我用过这段代码
String xPath = string.Format("/Validation/Presentation/Slide[lower-case(@Tag)='{0}'][1]", "test");
XmlNode node = doc.DocumentElement.SelectSingleNode(xPath);
Run Code Online (Sandbox Code Playgroud)
但它会抛出一个XPath异常:需要命名空间管理器或XsltContext.此查询具有前缀,变量或用户定义的函数.我哪里做错了?
我正在使用DispatcherTimer来调用C#中的void:
counter = new System.Windows.Threading.DispatcherTimer();
counter.Tick += new EventHandler(counter_Tick);
counter.Interval = new TimeSpan(0, 0, 1);
counter.Start();
Run Code Online (Sandbox Code Playgroud)
但是我希望间隔为几毫秒,TimeSpan的参数是小时,分钟,秒,只接受整数(据我所见).DispatcherTimer有解决方法吗?我试过Timer但是我不能用它(显然缺少参考)
提前致谢.
嗨我是postgres的新手,在将数据插入货币类型字段时,我收到的错误为..这里我的示例表是
CREATE TABLE x_table
(
t_name character varying(40) NOT NULL,
currency money
)
INSERT INTO x_table(t_name, currency)
VALUES ('TEST', 1000);
Run Code Online (Sandbox Code Playgroud)
并收到错误消息
ERROR: column "currency" is of type money but expression is of type integer
SQL state: 42804.
所以任何人都可以说如何解决这个问题..提前谢谢
这一定很简单,但我不明白为什么不允许这样做:
var testList = new List<int> { 2, 3, 400, 304, 50, 41 };
testList.Select(x => Console.WriteLine(x));
Run Code Online (Sandbox Code Playgroud)
但这很好:
testList.Select(x => x * 2);
Run Code Online (Sandbox Code Playgroud)
我在哪里误解LINQ导致这种混乱?