如何将架构添加到IXMLDOMDocument?
例如,我想生成 XML:
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="Frob" Target="Grob"/>
</Relationships>
Run Code Online (Sandbox Code Playgroud)
我可以构造 DOMDocument60 对象(伪代码):
DOMDocument60 doc = new DOMDocument60();
IXMLDOMElement relationships = doc.appendChild(doc.createElement("Relationships"));
IXMLDOMElement relationship = relationships.appendChild(doc.createElement("Relationship"));
relationship.setAttribute("Id", "rId1");
relationship.setAttribute("Type", "Frob");
relationship.setAttribute("Target", "Grob");
Run Code Online (Sandbox Code Playgroud)
现在是如何添加命名空间的问题。
如果我执行明显的解决方案,请在关系节点上设置一个名为xmlns:
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
Run Code Online (Sandbox Code Playgroud)
通过类似的东西:
relationships.setAttribute("xmlns",
"http://schemas.openxmlformats.org/package/2006/relationships");
Run Code Online (Sandbox Code Playgroud)
文档保存时,导致生成的xml出错:
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="Frob" Target="Grob" xmlns=""/>
</Relationships>
Run Code Online (Sandbox Code Playgroud)
它xmlns在每个其他元素上放置空属性。在这个小测试文档中,它只会错误地应用xmlns到一个元素。在现实世界中,有数十个或数百万个具有空xmlns属性的其他元素。
我尝试设置元素的namespaceURI属性Relationships:
relationshps.namespaceURI := "http://schemas.openxmlformats.org/package/2006/relationships";
Run Code Online (Sandbox Code Playgroud)
但该属性是只读的。
文档确实有一个schemas属性,它获取或设置一个 …
我有一个 TVirtualStringTree(版本 5.2.2),我需要添加它的节点对象而不是记录。
我已经看过这个问题的答案: Delphi,VirtualStringTree - 类(对象)而不是记录,但它们不起作用。
我想添加到树节点的对象就像
TNodeElem = class
public
LineTimeS, LogMessage, MethName: String;
LineDate,LineTime: TDateTime;
LineDateTime: TDateTime;
ElemType: TLogLineType;//ordinal type
....
end;
Run Code Online (Sandbox Code Playgroud)
这些节点被添加到 TObjectList 中:
FObjLst.Add(lNode);
Run Code Online (Sandbox Code Playgroud)
并添加到树中:
var iPos: Integer;
lNode: PVirtualNode;
ldata: TNodeElem;
begin
FTreeView.BeginUpdate;
for iPos := 0 to FObjLst.Count -1 do
begin
lNode := FTreeView.AddChild(nil);
lData := TNodeElem(FObjLst[iPos]);
FTreeView.getNodeData(lNode)^ := lData;//E2015 Operator not aplicable to this operand type
FTreeView.ValidateNode(lNode,False);
end;
FTreeView.EndUpdate;
end;
procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: …Run Code Online (Sandbox Code Playgroud) Provider=SQLOLEDB;Data Source=hydrogen;User ID=lgilmore;Password=squeegebeckenheim;Use Encryption for Data=true;Trust Server Certificate=true;给出错误:
[DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL 安全错误
我正在尝试加密 SQL Server 和 OLEDB 客户端(例如 ADO、SQLOLEDB)之间的通信。
我们从 Microsoft 注意到(除非您自己配置了一个),SQL Server 会自动生成一个自签名证书,用于保护登录过程:
使用加密而不验证
SQL Server 始终对与登录相关的网络数据包进行加密。如果服务器启动时未配置证书,SQL Server 会生成一个自签名证书,用于加密登录数据包。
我们的客户可以要求我们始终使用加密——而不仅仅是在登录过程中。再次,来自微软:
应用程序还可以使用连接字符串关键字或连接属性请求对所有网络流量进行加密。关键词是:
"Encrypt":对于 ODBC 和 OLE DB,当将提供程序字符串与IDbInitialize::Initialize一起使用时,或者"Use Encryption for Data"对于 ADO 和 OLE DB,将初始化字符串与IDataInitialize一起使用时。
这个Use Encryption for Data连接字符串关键字意味着我们要使用:
SQL Server 自动生成的自签名证书是自签名的。通常,客户端驱动程序会遍历证书的信任链以查看证书是否有效。使用自动自签名证书连接将失败。
但是还有另一个关键字可以强制客户端接受服务器证书:信任服务器证书:
为了在服务器上未配置证书时启用加密,应用程序可以使用
"TrustServerCertificate"关键字或其关联的连接属性来保证进行加密。为了即使在未配置服务器证书的情况下也能保证加密,应用程序可能会请求加密和"TrustServerCertificate".当 …
我面临着一个令人生畏的任务,即WM_GETOBJECT只要将消息发送到TWinControl表单上的任何消息,就必须拦截和处理消息.
显然,我不希望单独对每个控件进行子类化:
有没有办法参与处理使用SendMessage直接发送到子控件的每个消息
在FastMM处于活动状态的Delphi 5中,FreeMem对以下最小可重复代码的调用会触发Invalid Pointer Exception:
program Project1;
{$APPTYPE CONSOLE}
uses
FastMM4,
SysUtils,
Windows;
procedure Main;
var
token: THandle;
returnLength: Cardinal;
p: Pointer;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, {out}token);
//Get the size of the buffer required.
//It's normally going to be 38 bytes. We'll use 16KB to eliminate the possibility of buffer overrun
// Windows.GetTokenInformation(token, TokenUser, nil, 0, {var}returnLength);
p := GetMemory(16384); //GetMemory(returnLength);
Windows.GetTokenInformation(token, TokenUser, p, 1024, {var}returnLength);
FreeMem({var}p); //FreeMem is the documented way to free memory allocated …Run Code Online (Sandbox Code Playgroud) -我正在使用功能组件。- 现在我在这里使用 3 个组件,其中一个是父组件,另外 2 个是子组件。- 我需要访问一个子组件方法或状态到另一个子方法。我已经使用CreateRef完成了类组件,但现在我需要使用函数组件,但我在“ref.current”中得到 Null。
export function SideBySideList(props) {
const ref = React.createRef();
//this is call inside ListPage after sucess
function updateRightList(id) {
ref.current.state.actualSearchedModel.Id = id
ref.current.fetchDataAndUpdate();
}
function itemClicked(id) {
updateRightList(id);
}
return (
<>
<div className="col-12 no-padding">
<div className={props.leftListLayoutClass}>
<ListPage
updateRightList={updateRightList}
/>
</div>
<div className={props.rightListLayoutClass}>
<ListPage
ref={ref}
/>
</div>
</div>
<>
);
}Run Code Online (Sandbox Code Playgroud)
html模板作为资源编译到应用程序中.一个片段的HTML模板的样子:
<A href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR>
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)
我喜欢这样,因为较大的资源HTML文件包含样式,无怪癖模式等.
但总是如此,他们现在想要在没有链接时应该省略Anchor标签的选项.如果没有标题,则应省略BR标记.
鉴于我不想在C#代码中构建完整的HTML片段,我考虑过如下:
%ANCHORSTARTTAGPREFIX%<A href="%PANELLINK%" target="_blank">%ANCHORSTARTTAGPOSTFIX%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%ANCHORENDTAGPREFIX%</A>%ANCHORENDTAGPOSTFIX%CAPTIONPREFIX%<BR>
%CAPTIONTEXT%%CAPTIONPOSTFIX%
Run Code Online (Sandbox Code Playgroud)
我可以使用前缀和后缀将HTML代码转换为:
<!--<A href="%PANELLINK%" target="_blank">-->
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
<!--</A>--><!--<BR>
%CAPTIONTEXT%-->
Run Code Online (Sandbox Code Playgroud)
但这只是荒谬的,加上一个回答者提醒我们它浪费了带宽,并且可能是错误的.
批发更换标签:
%AnchorStartTag%
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%AnchorEndTag%%CaptionStuff%
Run Code Online (Sandbox Code Playgroud)
并做一个find-replace来改变
%AnchorStartTag%
Run Code Online (Sandbox Code Playgroud)
同
"<A href=\"foo\" target=\"blank\""
Run Code Online (Sandbox Code Playgroud)
我考虑过为重要的HTML元素提供ID:
<A id="anchor" href="%PANELLINK%" target="_blank">
<IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR id="captionBreak">
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)
然后使用HTML DOM解析器以编程方式删除节点.但是没有简单的方法可以访问值得信赖的HTML DOM解析器.如果HTML是xhtml,我将使用各种内置/本机可用的xml DOM解析器.
到目前为止我实际拥有的是:
private const String htmlEmptyTemplate =
@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD …Run Code Online (Sandbox Code Playgroud) 当我添加对Office COM库的引用时,我去:
神奇命名的参考出现:
Microsoft.Office.Core
该Project.csproj文件显示引用的详细信息:
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>4</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
Run Code Online (Sandbox Code Playgroud)
我将项目检查为源代码管理,现在没有其他人可以构建解决方案; 他们没有Office 12,他们只有Office 11.
另一个人检出.csproj文件,删除对以下内容的引用:
Microsoft Office 12.0 Object Library
Run Code Online (Sandbox Code Playgroud)
并重新添加COM引用:
Microsoft Office 11.0 Object Library
Run Code Online (Sandbox Code Playgroud)
之后,解决方案中出现新参考:
Microsoft.Office.Core
Run Code Online (Sandbox Code Playgroud)
并且Project.csproj文件显示了引用的详细信息:
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
Run Code Online (Sandbox Code Playgroud)
注意:阅读该问题的读者将理解该问题.它是相同的类型库,但版本2.3而不是版本2.4.
然后将项目检入源代码控制,现在使用Office 2007(以及Office 2000)的开发人员无法构建它,因为Visual Studio无法解析对以下内容的引用:
{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.3\0\primary
Run Code Online (Sandbox Code Playgroud)
我们显然需要一个版本独立的方式来引用Office.
我们如何引用开发人员在其计算机上构建它的Office版本?
我们如何让多个开发人员使用引用Office的解决方案?
注意:此问题与另一个Stackoverflow问题完全相同,但根本不同,如何从Visual Studio C#使用Office?
该问题涉及尝试从Visual Studio使用Office的所有问题.这个问题只关注一个具体问题.
我正在VS 2008中用C#开发一个winforms MDI应用程序.我注意到MDI表单在Vista下没有玻璃外观.
这是设计的吗?是否有一种简单的方法可以让玻璃看起来像这些窗户?
我需要在更改大小时更新编辑框周围的项目.
TEdit没有OnResize事件.
编辑框可以在不同时间调整大小,例如:
我相信其他人我不知道.
我需要一个单独的事件来知道编辑框何时改变了它的大小.是否有Windows消息我可以为编辑框子类化并抓取?
delphi ×4
aero ×1
aero-glass ×1
automation ×1
c# ×1
com ×1
components ×1
delphi-5 ×1
delphi-xe2 ×1
delphi-xe6 ×1
dom ×1
editbox ×1
encryption ×1
events ×1
fastmm ×1
function ×1
html ×1
interop ×1
mdi ×1
ms-office ×1
msxml ×1
reactjs ×1
resize ×1
sql-server ×1
winapi ×1
windows ×1