我试图将架构的属性元素限制为3到20个字符长,但是我收到一条错误消息,说我的RegEx无效:
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-Z]{3,20}" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Run Code Online (Sandbox Code Playgroud)
知道我在这里做错了什么吗?具体错误是"Range end code point is less than the start end code point"
<Requirement Description="description" Operation="Configure">
<Action ID="1000" Name="Split">
<Contract>
<Parameter Name="Version">4</Parameter>
<Parameter Name="DefaultServer">192.168.00.</Parameter>
<Parameter Name="DefaultUser">administrator</Parameter>
<Parameter Name="DefaultPassword">password</Parameter>
<Parameter Name="DefaultDomain">192.168.00.00</Parameter>
<Parameter Name="Split">1</Parameter>
</Contract>
</Action>
</Requirement>
Run Code Online (Sandbox Code Playgroud)
从上面的XML文档中,我的目标是从VBScript替换属性default server和default domain的IP地址.
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load(XMLFullPath)
Set NodeList = objXMLDoc.documentElement.SelectNodes("//Parameter")
NodeList(i).nodeName
Run Code Online (Sandbox Code Playgroud)
将名称命名为Parameter,并NodeList(i).Text为我提供4,IP地址,管理员等值.但是我无法获取属性名称,因此我可以直接更改属性的值.
当我使用JAXB编组java对象时,我得到了xml元素
<error line="12" column="" message="test" />
Run Code Online (Sandbox Code Playgroud)
但我想要xml如下
<error line="12" message="test" />
Run Code Online (Sandbox Code Playgroud)
如果列值为空,那么我需要获取如上所示的xml,否则我需要获取元素中的column属性.
有没有办法得到它?
我正在尝试创建一个带有根元素的 XML 文件:
<urn:Command complete="true" xmlns:urn="namespaceURI">
Run Code Online (Sandbox Code Playgroud)
所以我有一个元素Command
,一个命名空间,namespaceURI
一个前缀urn
,最后一个属性字符串,其中包含名称和complete值true ,但没有命名空间。
我为此编写的代码返回:
<urn:Command xmlns:urn="namespaceURI" complete="true">
Run Code Online (Sandbox Code Playgroud)
所以问题是我希望属性字符串位于 XML 文件中的命名空间定义之前,但我在该网站上找不到类似的问题。
我尝试编写一个StartElement带有前缀和名称空间的元素,然后编写一个AttributeString不带名称空间的元素,这将返回根元素,其中首先定义了名称空间,然后是属性字符串。我也尝试过仅定义一个开始元素,然后定义两个属性字符串,但后来我找不到将前缀写入开始元素的方法。
这是我的原始代码,它首先返回具有命名空间定义的根元素,然后返回属性定义:
`Dim Writer as System.Xml.XmlWriter;
dim writerSettings as System.Xml.XmlWriterSettings;
dim basePath as string;
dim source as string;
dim destination as string;
writerSettings = new System.Xml.XmlWriterSettings();
'writerSettings.ConformanceLevel= false;
'writerSettings.Encoding = new System.Text.UTF8Encoding(false);
writerSettings.OmitXmlDeclaration = false;
basePath = System.IO.Path.Combine("\\wnlcuieb502\WEI\Outbound","RolexSet");
source = System.IO.Path.Combine(basePath,"\\wnlcuieb502\WEI\Outbound","TEST.XML");
Writer = System.Xml.XmlWriter.Create(source,writerSettings);
Writer.WriteStartDocument();
Writer.WriteStartElement("urn","SetPackagingOrder","urn:laetus.com:ws:tts:mes");
Writer.WriteAttributeString("complete",null,"true");
Writer.WriteEndElement();
Writer.WriteEndDocument();
Writer.dispose();
try
destination …Run Code Online (Sandbox Code Playgroud) 有人可以帮我从这个xml结构中使用c#读取属性ows_AZPersonnummer
<listitems
xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:rs="urn:schemas-microsoft-com:rowset"
xmlns:z="#RowsetSchema"
xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<rs:data ItemCount="1">
<z:row
ows_AZNamnUppdragsansvarig="Peter"
ows_AZTypAvUtbetalning="Arvode till privatperson"
ows_AZPersonnummer="196202081276"
ows_AZPlusgiro="5456436534"
ows_MetaInfo="1;#"
ows__ModerationStatus="0"
ows__Level="1" ows_ID="1"
ows_owshiddenversion="6"
ows_UniqueId="1;#{11E4AD4C-7931-46D8-80BB-7E482C605990}"
ows_FSObjType="1;#0"
ows_Created="2009-04-15T08:29:32Z"
ows_FileRef="1;#uppdragsavtal/Lists/Uppdragsavtal/1_.000"
/>
</rs:data>
</listitems>
Run Code Online (Sandbox Code Playgroud)
并获得价值196202081276.
我在这里看到了几个例子,其中Xpath与XmlDocument一起使用,以从XmlDocument节点获取特定属性....
Console.WriteLine(xmlDocument.SelectSingleNode("//dataTemplateSpecification/templates/template/elements/element/@name").Value.ToString());
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我得到一个"对象引用未设置为对象的实例".例外.每当我遇到特定的代码行时.我有一个小测试应用程序,我已经设置为测试不同的东西,然后我把它们放入我的主项目...
这是代码......
namespace ReadXml
{
class Program
{
static void Main(string[] args)
{
//string fulXmlPath = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/templateExample.xml");
XDocument xDocument = XDocument.Load("C:\\Users\\derekww\\Documents\\XML Documents\\templateExample.xml");
XElement elem = xDocument.Element("dataTemplateSpecification"); ;
XmlDocument xmlDocument = new XmlDocument();
StreamReader file = new StreamReader("C:\\Users\\derekww\\Documents\\XML Documents\\templateExample.xml");
xmlDocument.Load(file);
//XmlDocument theDoc = new XmlDocument();
//using (var xmlReader = xDocument.CreateReader())
//{
// xmlDocument.Load(xmlReader);
//}
//Console.WriteLine(elem.ToString());
XmlNode xNode = xmlDocument.SelectSingleNode("//dataTemplateSpecification/templates/template/elements/element");
Console.WriteLine("WORK PLEASE!!!! {0}", xNode.Value.ToString());
//Console.WriteLine(xmlDocument.SelectSingleNode("//dataTemplateSpecification/templates/template/elements/element/@name").Value.ToString());
//Console.WriteLine("This better Work>>>> {0}", xmlDocument.Attributes["/dataTemplateSpecification/templates/template/elements/element/@name"].Value);
Console.ReadLine();
//Console.WriteLine("This better Work>>>> {0}", xmlDocument.SelectSingleNode("//dataTemplateSpecification/templates/template/elements/element/@name").Value);
//foreach (String AttVal in …Run Code Online (Sandbox Code Playgroud) 我有一个ac#应用程序,可以将用户的数据保存到xml文档中.我希望能够根据输入不同条件的用户动态更改xml节点的属性到文本框中,并选择保存/覆盖现有文件保存.问题是我不能简单地删除节点并使用new属性重新创建节点,因为节点具有无法删除的子节点.
有没有人有任何想法或建议?
XmlNode.Attributes方法没有提供一种方法,因为我可以告诉它只删除节点的属性并重新分配它.我可能错了.
我已经在 C# 中有一个 XmlDocument 对象。假设 InnerXml 看起来像这样;
<MyResponse>
<ResponseType>
<Id>8825</Id>
</ResponseType>
</MyResponse>
Run Code Online (Sandbox Code Playgroud)
如何添加名称为 uuid 且值为 781283721381 的属性,例如 uuid="781283721381"。所以我的 Xml 输出如下所示;
<MyResponse uuid="781283721381">
<ResponseType>
<Id>8825</Id>
</ResponseType>
</MyResponse>
Run Code Online (Sandbox Code Playgroud) 我有一个包含以下 XML 内容的 XML-Stream:
<WebError Key="A">
<Message>B</Message>
<Parameters>
<Parameter name="C">D</Parameter>
</Parameters>
</WebError>
Run Code Online (Sandbox Code Playgroud)
我找不到XmlReader读取Key属性的方法,所以reader.NodeTypeisXmlNodeType.Attribute和reader.LocalNameis "Key"。
这就是我初始化我的方式XmlReader:
XmlReader.Create(stream, new XmlReaderSettings { CloseInput = true, IgnoreWhitespace = true });
Run Code Online (Sandbox Code Playgroud)
这个读取器然后通过几个方法级别,直到它到达我的解析器函数。
这是我试图让读者阅读该元素的所有替代代码。从代码中剥离了控制结构,因此您只能看到实际调用的函数。
第一次尝试,通过MoveToFirstAttribute()调用移动到属性:
reader.Read(); // true
reader.IsStartElement("WebError"); // true
using (var nodeReader = reader.ReadSubtree()) {
nodeReader.HasAttributes; // true
nodeReader.MoveToFirstAttribute(); // false
nodeReader.Read(); // true
nodeReader.NodeType; // XmlNodeType.Element
nodeReader.LocalName; // "WebError"
using (var subLevelReader = nodeReader.ReadSubtree()) {
}
nodeReader.Read(); // …Run Code Online (Sandbox Code Playgroud) 我正在编写格式化 XML 文件的代码,以便子文件夹节点实际上嵌套在其父节点中。源 XML 将每个文件夹作为根中的单独子节点,而不是像您期望的那样在其主文件夹中包含子文件夹的正确树。这个问题的代码是关于:
// Load original XML
string sFile = "PathFile";
XmlDocument doc = new XmlDocument();
doc.Load(sFile);
var n = doc.DocumentElement.SelectNodes ("//*"); // Load all nodes into nodelist n
// int nCount = n.Count; // If uncommented code works
foreach(XmlNode x in n)
{ rest of the code }
Run Code Online (Sandbox Code Playgroud)
现在我的代码工作正常,但只是有时,即使在两次运行之间没有改变任何东西。我已将范围缩小为:在 Visual Studio 中调试代码时,如果我只是从头到尾运行代码,则会出错。如果我中途中断并查看 XmlNodelist n 中的属性(通过将光标悬停在它上面并查看元素计数),它确实可以工作。发现这一点后,我添加了
int nCount = n.Count;
Run Code Online (Sandbox Code Playgroud)
行,现在代码从头到尾在无人监督的情况下运行。
这里发生了什么,解决这个问题的正确方法是什么?注意: doc.LoadXml 不适用于此特定文件。
谢谢你的负担,
托马斯
xml-attribute ×10
c# ×7
xml ×5
xmldocument ×2
asp.net ×1
enumerable ×1
enumerate ×1
jaxb ×1
regex ×1
vbscript ×1
xml-parsing ×1
xmllist ×1
xmlnode ×1
xmlreader ×1
xmlwriter ×1
xpath ×1
xsd ×1