Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
runtime
提交
6a7050ea
R
runtime
项目概览
dotNET Platform
/
runtime
11 个月 前同步成功
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
runtime
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
6a7050ea
编写于
3月 23, 2022
作者:
S
Stephen Toub
提交者:
GitHub
3月 23, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove unnecessary XmlQualifiedName allocations from XsdBuilder.ProcessElement/Attribute (#67045)
上级
f846c970
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
11 deletion
+17
-11
src/libraries/System.Private.Xml/src/System/Xml/Schema/XsdBuilder.cs
...es/System.Private.Xml/src/System/Xml/Schema/XsdBuilder.cs
+14
-10
src/libraries/System.Private.Xml/src/System/Xml/XmlQualifiedName.cs
...ies/System.Private.Xml/src/System/Xml/XmlQualifiedName.cs
+3
-1
未找到文件。
src/libraries/System.Private.Xml/src/System/Xml/Schema/XsdBuilder.cs
浏览文件 @
6a7050ea
...
...
@@ -703,8 +703,10 @@ public BuilderNamespaceManager(XmlNamespaceManager nsMgr, XmlReader reader)
internal
override
bool
ProcessElement
(
string
prefix
,
string
name
,
string
ns
)
{
XmlQualifiedName
qname
=
new
XmlQualifiedName
(
name
,
ns
);
if
(
GetNextState
(
qname
))
name
??=
string
.
Empty
;
ns
??=
string
.
Empty
;
if
(
GetNextState
(
name
,
ns
))
{
Push
();
Debug
.
Assert
(
_currentEntry
.
InitFunc
!=
null
);
...
...
@@ -715,9 +717,9 @@ internal override bool ProcessElement(string prefix, string name, string ns)
}
else
{
if
(!
IsSkipableElement
(
qname
))
if
(!
IsSkipableElement
())
{
SendValidationEvent
(
SR
.
Sch_UnsupportedElement
,
qname
.
ToString
(
));
SendValidationEvent
(
SR
.
Sch_UnsupportedElement
,
XmlQualifiedName
.
ToString
(
name
,
ns
));
}
return
false
;
}
...
...
@@ -726,13 +728,15 @@ internal override bool ProcessElement(string prefix, string name, string ns)
internal
override
void
ProcessAttribute
(
string
prefix
,
string
name
,
string
ns
,
string
value
)
{
XmlQualifiedName
qname
=
new
XmlQualifiedName
(
name
,
ns
);
name
??=
string
.
Empty
;
ns
??=
string
.
Empty
;
if
(
_currentEntry
.
Attributes
!=
null
)
{
for
(
int
i
=
0
;
i
<
_currentEntry
.
Attributes
.
Length
;
i
++)
{
XsdAttributeEntry
a
=
_currentEntry
.
Attributes
[
i
];
if
(
_schemaNames
.
TokenToQName
[(
int
)
a
.
Attribute
].
Equals
(
qname
))
if
(
_schemaNames
.
TokenToQName
[(
int
)
a
.
Attribute
].
Equals
(
name
,
ns
))
{
try
{
...
...
@@ -768,7 +772,7 @@ internal override void ProcessAttribute(string prefix, string name, string ns, s
}
else
{
SendValidationEvent
(
SR
.
Sch_UnsupportedAttribute
,
qname
.
ToString
(
));
SendValidationEvent
(
SR
.
Sch_UnsupportedAttribute
,
XmlQualifiedName
.
ToString
(
name
,
ns
));
}
}
...
...
@@ -2433,14 +2437,14 @@ private void AddParticle(XmlSchemaParticle particle)
}
}
private
bool
GetNextState
(
XmlQualifiedName
qname
)
private
bool
GetNextState
(
string
name
,
string
ns
)
{
if
(
_currentEntry
.
NextStates
!=
null
)
{
for
(
int
i
=
0
;
i
<
_currentEntry
.
NextStates
.
Length
;
++
i
)
{
int
state
=
(
int
)
_currentEntry
.
NextStates
[
i
];
if
(
_schemaNames
.
TokenToQName
[(
int
)
s_schemaEntries
[
state
].
Name
].
Equals
(
qname
))
if
(
_schemaNames
.
TokenToQName
[(
int
)
s_schemaEntries
[
state
].
Name
].
Equals
(
name
,
ns
))
{
_nextEntry
=
s_schemaEntries
[
state
];
return
true
;
...
...
@@ -2451,7 +2455,7 @@ private bool GetNextState(XmlQualifiedName qname)
return
false
;
}
private
bool
IsSkipableElement
(
XmlQualifiedName
qname
)
private
bool
IsSkipableElement
()
{
return
((
CurrentElement
==
SchemaNames
.
Token
.
XsdDocumentation
)
||
(
CurrentElement
==
SchemaNames
.
Token
.
XsdAppInfo
));
...
...
src/libraries/System.Private.Xml/src/System/Xml/XmlQualifiedName.cs
浏览文件 @
6a7050ea
...
...
@@ -78,9 +78,11 @@ public override bool Equals([NotNullWhen(true)] object? other)
return
true
;
}
return
other
is
XmlQualifiedName
qName
&&
Name
==
qName
.
Name
&&
Namespace
==
qName
.
Namespace
;
return
other
is
XmlQualifiedName
qName
&&
Equals
(
qName
.
Name
,
qName
.
Namespace
)
;
}
internal
bool
Equals
(
string
name
,
string
ns
)
=>
Name
==
name
&&
Namespace
==
ns
;
/// <devdoc>
/// <para>[To be supplied.]</para>
/// </devdoc>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录