我正在使用Xerces的Sax Parser解析XML文件.
是否<?xml version="1.0" encoding="UTF-8"?>需要XML声明?
我是XML的新手,我正在努力理解基础知识.我在"学习XML"中读到了以下这一行,但对我来说仍然不太清楚.有人能指出我的书或网站,清楚地解释这些基础知识吗?
从学习XML:
XML声明描述了文档的一些最常见的属性,告诉XML处理器它需要一个XML解析器来解释这个文档.
这是什么意思?
我理解这个xml version部分 - doc的doc和user都应该在同一版本的XML中"讨论".但那encoding部分呢?为什么这有必要?
我需要得到简单的xml,而不是<?xml version="1.0" encoding="utf-16"?>在开头和xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"第一个元素中XmlSerializer.我该怎么做?
可以在XML文件中的XML声明之前放置注释吗?
<!--
Is this bad to do?
-->
<?xml version="1.0" encoding="utf-8"?>
<someElement />
Run Code Online (Sandbox Code Playgroud) 在HTML5中使用SVG时:SVG是否<?xml version="1.0" encoding="UTF-8"?>需要XML声明
<img>或background-image?这与" 是否需要'xmlns'和'版本'等SVG参数 "略有关系.两个答案和MDN Namespace崩溃课程将根据需要阐明名称空间问题.
但SVG 1.1不包括XML声明的必要性声明或何时可以省略?
没有声明的示例:
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
<circle id="circle--red" cx="30" cy="30" r="30" fill="#f00"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
更新2016-07-04:澄清该问题是关于XML声明.谢谢@Martin Honnen! 更新2017-10-24:更改为"UTF-8"大写和SVGO优化属性顺序.
尽管在以下代码中使用了SaveOptions.DisableFormatting选项:
XDocument xmlDoc = XDocument.Load(FileManager.SourceFile);
string element="campaign";
string attribute="id";
var items = from item in xmlDoc.Descendants(element)
select item;
foreach (XElement itemAttribute in items)
{
itemAttribute.SetAttributeValue(attribute, "it worked!");
//itemElement.SetElementValue("name", "Lord of the Rings Figures");
}
xmlDoc.Save(TargetFile, SaveOptions.DisableFormatting);
Run Code Online (Sandbox Code Playgroud)
目标XML文件将其添加到它:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
有没有办法保留原始格式,并没有添加版本和编码信息?
我正在使用python的lxml,我正在尝试读取xml文档,修改并将其写回,但原始的doctype和xml声明消失了.我想知道是否有一种简单的方法可以通过lxml或其他解决方案将其放回去?
在同一个文档格式良好的XML中有两个XML声明吗?
<?xml version="1.0" encoding="UTF-8"?>
<a>
<?xml version="1.0" encoding="UTF-8"?>
<b>
hello
</b>
</a>
Run Code Online (Sandbox Code Playgroud)
我相信它不是,但我找不到支持我的消息来源.
定义:XML文档应该以XML声明开头,该声明指定所使用的XML的版本.
那个讨厌的词"应该"就在那里.理想情况下,文档以XML声明开头.它没有说明在文档中有另一个.
文档类型声明必须出现在文档中的第一个元素之前.
这很接近,但它没有谈论XML声明本身,即使它应该在它之前.
我想从文件中读取所有XML内容.下面的代码仅在<?xml version="1.0" encoding="UTF-8"?>删除XML声明()时有效.在不删除XML声明的情况下读取文件的最佳方法是什么?
XmlTextReader reader = new XmlTextReader(@"c:\my path\a.xml");
reader.Read();
string rs = reader.ReadOuterXml();
Run Code Online (Sandbox Code Playgroud)
在不删除XML声明的情况下,reader.ReadOuterXml()返回一个空字符串.
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://www.as.com/ver/ver.IClaimver/Car</a:Action>
<a:MessageID>urn:uuid:b22149b6-2e70-46aa-8b01-c2841c70c1c7</a:MessageID>
<ActivityId CorrelationId="16b385f3-34bd-45ff-ad13-8652baeaeb8a" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">04eb5b59-cd42-47c6-a946-d840a6cde42b</ActivityId>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">http://localhost/ver.Web/ver2011.svc</a:To>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Car xmlns="http://www.as.com/ver">
<carApplication>
<HB_Base xsi:type="HB" xmlns="urn:core">
<Header>
<Advisor>
<AdvisorLocalAuthorityCode>11</AdvisorLocalAuthorityCode>
<AdvisorType>1</AdvisorType>
</Advisor>
</Header>
<General>
<ApplyForHB>yes</ApplyForHB>
<ApplyForCTB>yes</ApplyForCTB>
<ApplyForFSL>yes</ApplyForFSL>
<ConsentSupplied>no</ConsentSupplied>
<SupportingDocumentsSupplied>no</SupportingDocumentsSupplied>
</General>
</HB_Base>
</carApplication>
</Car>
</s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)
更新
我知道其他使用NON-xml阅读器的方法(例如使用File.ReadAllText()).但我需要知道一种使用xml方法的方法.
我想将声明添加到用 Javascript 生成的 XML 文档中,但我没有找到足够的文档。
假设我想以编程方式(使用 Javascript)创建以下 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person first-name="eric" last-name="jung" />
</people>
Run Code Online (Sandbox Code Playgroud)
这是我所做的代码:
let doc = document.implementation.createDocument("", "", null);
let peopleElem = doc.createElement("people");
let personElem = doc.createElement("person");
personElem.setAttribute("first-name", "eric");
personElem.setAttribute("last-name", "jung");
peopleElem.appendChild(personElem);
doc.appendChild(peopleElem);
let docStr = new XMLSerializer().serializeToString(doc.documentElement);
console.log(docStr);
// produces:
// <people>
// <person first-name="eric" last-name="jung" />
// </people>
// and not:
// <?xml version="1.0" encoding="UTF-8"?>
// <people>
// <person first-name="eric" last-name="jung" />
// </people>
Run Code Online (Sandbox Code Playgroud)
我应该如何获取<?xml version="1.0" encoding="UTF-8"?>生成的 XML 中的 ? …
xml-declaration ×10
xml ×8
c# ×3
.net ×1
.net-3.5 ×1
doctype ×1
html5 ×1
javascript ×1
lxml ×1
python ×1
svg ×1
xml-encoding ×1