我有一个XML文档,我加载并尝试使用XPath进行搜索.此文件中的根节点<t:Transmission xmlns:t='urn:InboundShipment'>已正确关闭文件末尾</t:Transmission>.
我的问题是我不能在不使用后代轴的情况下走树.换句话说,我可以这样做:SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']")并获得一个节点作为回报.但是我不能做相同的事情:SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")
如果我删除了t:我可以执行XPath搜索/Transmission并获取整个文件.随着t:在那里我只是得到空.或者,如果我尝试SelectSingleNode("t:Transmission")我的XPath语句出错.
我通常不需要查询根元素,所以我应该能够使用后代轴进行搜索.但XML看起来对我有用,所以我想知道如何解决这个问题.另外,我不想让客户删除"t:"只是因为我不知道如何处理它.
所以,我一直试图解决这个问题大约两个月.这一切都始于我的"开发"机器出现在我的笔记本电脑上.它在我的旧电脑上工作很有趣,但它在我的新电脑上不起作用,从未在笔记本电脑上工作过.
我构建SQL Server就像我记得的第一个一样,但它开始给我SQLExceptions.我用谷歌搜索它,我在这里搜索它,我尝试了不同的解决方案.没有.
我会发布有问题的代码,我希望有人能够帮我看看我的缺陷.我确信这是愚蠢的.
SqlCommand sc = sqlc.CreateCommand();
sc.CommandText = "SELECT pNumber FROM database WHERE pNumber = '" + Number.ToString() + "'";
SqlDataReader sdr = sc.ExecuteReader();
if (sdr.Read().ToString() != null)
{
sdr.Close();
sc.CommandText = "UPDATE word SET word = '" + Word + "' WHERE pNumber = '" + Number.ToString() + "'";
HERE IS WHERE THE ERROR OCCURS----> sc.ExecuteReader();
}
else
{
sdr.Close();
sc.CommandText = "INSERT INTO database VALUES(" + Number.ToString() + ",'" + Word + "',0, 0, 0)";
sc.ExecuteNonQuery(); …Run Code Online (Sandbox Code Playgroud) 这是我连接并发送文件到远程SFTP服务器的代码.
public static void SendDocument(string fileName, string host, string remoteFile, string user, string password)
{
Scp scp = new Scp();
scp.OnConnecting += new FileTansferEvent(scp_OnConnecting);
scp.OnStart += new FileTansferEvent(scp_OnProgress);
scp.OnEnd += new FileTansferEvent(scp_OnEnd);
scp.OnProgress += new FileTansferEvent(scp_OnProgress);
try
{
scp.To(fileName, host, remoteFile, user, password);
}
catch (Exception e)
{
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用CoreFTP成功连接,发送和接收文件.因此,问题不在于服务器.当我运行上面的代码时,进程似乎停在scp.To方法.它只是无限期地挂起.
任何人都知道我的问题可能是什么?也许它与将密钥添加到SSH缓存有关?如果是这样,我该怎么做呢?
编辑:我使用wireshark检查了数据包,发现我的计算机没有执行Diffie-Hellman密钥交换初始化.这一定是问题所在.
编辑:我最终使用以下代码.请注意,StrictHostKeyChecking已关闭以简化操作.
JSch jsch = new JSch();
jsch.setKnownHosts(host);
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
System.Collections.Hashtable hashConfig = new System.Collections.Hashtable();
hashConfig.Add("StrictHostKeyChecking", "no");
session.setConfig(hashConfig);
try …Run Code Online (Sandbox Code Playgroud) 我需要为抽象基础对象创建复杂谓词.我想为不同的继承实体设置单独的谓词查询并关闭子实体类型,下面的示例是我想要做的,但是,我还没有找到引用实体名称或输入的方法谓词.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"MyCommonObjectBase" inManagedObjectContext:myContext];
NSPredicate *subclassAPredicate = [NSPredicate predicateWithFormat:@"someValue > %@ && entityName = %@", 100, @"SubclassA"];
NSPredicate *subclassBPredicate = [NSPredicate predicateWithFormat:@"someValue < %@ && entityName = %@", 50, @"SubclassB"];
request.predicate = [NSCompoundPredicate orPredicateWithSubpredicates:[NSArray arrayWithObjects:subclassAPredicate, subclassBPredicate, nil]];
Run Code Online (Sandbox Code Playgroud) 我们有时会编写重命名表或列并具有其他复杂逻辑的数据端口脚本。我们还在 IF 语句中使用 SQL 来引用那些旧的列或表。我们有一个标准使用 IF 语句来使我们的 SQL 脚本多运行友好。
但是偶尔,即使 if 语句的计算结果为 false,包裹在块中的代码也会出错,我猜是因为语法检查。
if 1 = 0
begin
select * from mydatabase.dbo.mytable; -- doesn't execute, but still errors because doesn't exist
end
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的事情是它并不总是一致的,有时它工作正常。
有谁知道我是否可以通过脚本禁用这些类型的检查。
谢谢
笔记
我知道人们会说他们尝试过类似的情况并且没有出错。起初对我来说,它在 SSMS 中没有出错,但在 SQLCMD 中出错了。
sqlcmd MyTestScript.sql -r 1 -U user -P password
Run Code Online (Sandbox Code Playgroud)
然后我将 SSMS 置于 SQLCMD 模式 Query -> CMDMODE 并且它仍然没有给出错误。然后在重新运行几次后,它开始在两者中出错。
如何检查SQL服务器中是否存在全局临时表,如果是,则删除该全局临时表?
我正在尝试执行此操作:
IF OBJECT_ID('##Table', 'U') IS NOT NULL
DROP TABLE ##Table
Run Code Online (Sandbox Code Playgroud)
......但它不起作用.
问题是,DataGrid 中的空白行没有出现,因此用户无法添加数据。这是代码:
System.Collections.ObjectModel.ObservableCollection<CoreVocabularyEntry> dataList = new System.Collections.ObjectModel.ObservableCollection<CoreVocabularyEntry>();
public VocabularyToolWindow()
{
InitializeComponent();
dataList.Add(new CoreVocabularyEntry { Foreign = "ja", Native = "ano" });
ListCollectionView view = new ListCollectionView(dataList);
WordsDataGrid.ItemsSource = dataList;
WordsDataGrid.CanUserAddRows = true;
MessageBox.Show(view.CanAddNew.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么 view.CanAddNew 等于 false。这看起来像是一个非常标准的场景,所以可能有一些我遗漏的东西。有人可以告诉我代码有什么问题吗?CoreVocabularyEntry 如下:
public struct CoreVocabularyEntry : IVocabularyEntry
{
#region IVocabularyEntry Members
public string Foreign
{
get;
set;
}
public string Native
{
get;
set;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
谢谢,JK
我正在尝试构建一个方法,在未加权的图形中返回从一个节点到另一个节点的最短路径.我考虑过使用Dijkstra,但这似乎有点矫枉过正,因为我只需要一对.相反,我已经实现了广度优先搜索,但问题是我的返回列表包含一些我不想要的节点 - 如何修改我的代码以实现我的目标?
public List<Node> getDirections(Node start, Node finish){
List<Node> directions = new LinkedList<Node>();
Queue<Node> q = new LinkedList<Node>();
Node current = start;
q.add(current);
while(!q.isEmpty()){
current = q.remove();
directions.add(current);
if (current.equals(finish)){
break;
}else{
for(Node node : current.getOutNodes()){
if(!q.contains(node)){
q.add(node);
}
}
}
}
if (!current.equals(finish)){
System.out.println("can't reach destination");
}
return directions;
}
Run Code Online (Sandbox Code Playgroud) 我注意到我们的 MySQL 服务器上的“显示进程列表”表示许多线程处于“系统锁定”状态,通常后面只是“锁定”,后者是我所期望的,因为我们有一些选择锁定在更新/插入后面一个 MyISAM 表。
但是“系统锁定”显示的不仅仅是“锁定”(根据探查器,有时简单的选择会增加长达 2 秒的时间),而且我不明白它表示什么。我在网上找不到太多关于系统锁的信息,但那里主要讨论多个 mysqld 访问同一个数据库的情况,这不是我的情况。此外,我的“跳过外部锁定”变量是错误的。
有人有这方面的经验吗?
附录:
如果有帮助的话,我倾向于在进程列表中看到更多的系统锁比表锁(“锁定”)多,大约为 3 比 1。是否有可能由于某种原因输出“系统锁”以实现有效的常规表锁定?
是否在某处记录了"svnadmin dump"格式?我想记录一个包含svn存储库的所有元数据的数据结构,除了文件内容本身之外,它与"转储"文件中的内容基本相同.
看起来像svnkit库会有它,或者有办法以编程方式获取这个元数据,但是我已经在svnkit javadoc中运行了最后一小时,并且无法找到一种方法来获取我需要的东西而不会遇到更多麻烦而不仅仅是自己解析svnadmin转储文件.